Написал такой код, но он работает не так, как я ожидал. Видимо это связано с тем, что я не понимаю сиснтаксис работы с правилами
this.When(() => IsRuleActual(order), _waitingPeriod)
.Do(() => ReplaceOrder(order))
.Once()
.Sync(syncRules);
private bool IsRuleActual(Order order)
{
bool isRuleActual = (order.State == OrderStates.Active);
WriteDiagnostics("IsRuleActual " + isRuleActual.ToString());
return isRuleActual;
}
Я ожидал, что спустя указанный промежуток времени, будет вызван метод IsRuleActual, и если он вернет true, то будет вызван обработчик правила - ReplaceOrder. И ещё я ожидал, что метод IsRuleActual будет вызыватся один раз, но он вызывается каждые 30 секунд(в моём случае).
Скажите пожалуйста, как с помощью When(Func<Boolean>), TimeSpan) создать правило, которое при верности условия, вызвыает метод и делает это один раз? и как синхронизировать это правило (т.к. я полагаю, что эта строка тоже не работает Sync(syncRules)) ?
Комментарии (8)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
IsRuleActual - а это что такое вообще? я не нашел в документации и в пс тоже
хотя все верно, просто у тебя там всегда тру (тесть активный ордер, вот у тебя и вызывается каждые 30 сек) попробуй вместо == поставить !=
tmt, это наследние от языкка С. Вот это выражение - order.State == OrderStates.Active вернет результат сравения. Так короче, а результат будет один и тот же.
тогда жди ответа специалистов, мне надо просто пробовать.. тыкать🙂
Исправлено, перевыложу сейчас 4.0.18