Правило помечено как Once, но иногда вызывается дважды

Правило помечено как Once, но иногда вызывается дважды
Atom
24.08.2011
vader


При исполнении сделки вызывается метод, где пересчитывается позиция.
Правило помечено как Once, но иногда вызывается дважды.
Вот вывод изменения текущей позиции и TransactionId
1 61947599
2 61947600
11 61947601
12 61947602
19 61947603
25 61947604
26 61947605
27 61947606
28 61947606
33 61947607
36 61947608

3и 4 с конца списка - дважды посчитано по одной сделке.

Теги:


Спасибо:


Alexander

Фотография
Дата: 25.08.2011
Ответить


Покажите где и как создаёте правило.
Также проверьте данное поведение на 3.2.10
Спасибо:

vader

Фотография
Дата: 25.08.2011
Ответить




Код

if(_free){
						_free = false;
						_order = new Order
						{
							Portfolio = this.Portfolio,
							Volume = vol,
							Price = price,
							Security = this.Security,
							Direction = OrderDirections.Sell,
						};
						
						WrapRegisterOrder();
					}

private void WrapRegisterOrder()
		{
			_ruleMatched = this
				.When(StrategyRuleConditionHelper.Matched(_order))
				.Do(RecalculateVolume)
				.Once();
			_ruleMatched.EnableLog(true);
Register(_order);
_free = false;
}
Спасибо:

Alexander

Фотография
Дата: 28.08.2011
Ответить


vader


Код

if(_free){
						_free = false;
						_order = new Order
						{
							Portfolio = this.Portfolio,
							Volume = vol,
							Price = price,
							Security = this.Security,
							Direction = OrderDirections.Sell,
						};
						
						WrapRegisterOrder();
					}

private void WrapRegisterOrder()
		{
			_ruleMatched = this
				.When(StrategyRuleConditionHelper.Matched(_order))
				.Do(RecalculateVolume)
				.Once();
			_ruleMatched.EnableLog(true);
Register(_order);
_free = false;
}



Не вижу где здесь делается вывод того, что в первом сообщении.
Также неясно что с 3.2.10

Зачем 2 раза free = false?
И сколько раз правило создаётся?
Спасибо:

vader

Фотография
Дата: 28.08.2011
Ответить


Правило создается каждый раз при регистрации новой заявки.
Зачем 2 раза free = false? - забыл удалить нижнию.

Не вижу где здесь делается вывод того, что в первом сообщении. - происходит в методе ,вызываемом при исполнении правила - RecalculateVolume.
Также неясно что с 3.2.10 - Пока мало тестировал, определённо сказать не могу.
Спасибо:

Alexander

Фотография
Дата: 28.08.2011
Ответить


Пришлите минимальный проект, где это воспроизводится.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy