Ситуация такая. Версия библиотеки 4.0.22.
Есть стратегия родительская, есть дочерняя. Если в дочерней происходят ошибки, то она вызывает следующий код.
private void FatalFinish(string message)
{
OnError(new Exception(message));
Stop();
}
В родительской стратегии в случае ошибки, дочерняя сразу же принудительно завершается через код.
ChilsStrategy.Stop();
В дочерней стратегии есть следующий код.
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 мы проверяем число ошибок, то будем получать всегда предыдущее значение этого числа ошибок.
Kommentare (1)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Будет фикс в следующей версии 4.1 на codeplex