Некорректная отработка ошибок в стратегиях.


Некорректная отработка ошибок в стратегиях.
Atom
5/20/2012


Ситуация такая. Версия библиотеки 4.0.22.

Есть стратегия родительская, есть дочерняя. Если в дочерней происходят ошибки, то она вызывает следующий код.
Code

        private void FatalFinish(string message)
        {
            OnError(new Exception(message));
            Stop();
        }


В родительской стратегии в случае ошибки, дочерняя сразу же принудительно завершается через код.

Code
ChilsStrategy.Stop();


В дочерней стратегии есть следующий код.

Code
        protected override void OnStopped()
        {
            if (ErrorCount > 0)
                this.AddInfoLog("OnStopped(): Последний регистрируемый ордер Id: {0} TransId {1}.", Order.Id, Order.TransactionId);
            else
                this.AddInfoLog("OnStopped(): Зарегистрированный ордер Id: {0} TransId {1}.", Order.Id, Order.TransactionId);

            base.OnStopped();
        }


В итоге получаем что когда дочерняя стратегия завершена, число ошибок у нее равно НУЛЮ. То есть код выше всегда выполняется будто ошибок не было.

Я полагаю что это происходит из-за того что в классе Strategy, сначала генерится событие об ошибке в стратегии, а только потом увеличивается счетчик ошибок. Что некорректно. Если стратегия сгенерила ошибку, и в хендлере события Error мы проверяем число ошибок, то будем получать всегда предыдущее значение этого числа ошибок.

Tags:


Thanks:


Alexander

Avatar
Date: 5/20/2012
Reply


Будет фикс в следующей версии 4.1 на codeplex
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy