[normal] параллельная дочерняя стратегия не параллельна
Очень понравилась идея с дочерними стратегиями и достаточно элегантная реализация. Спасибо, Михаил.
Наткнулся на небольшую проблему. Есть стратегия, производная от TimeFrameStrategy. В ней создаются две зависимые дочерние стратегии, которые помечаются как параллельные:
Code
protected override StrategyProcessResults OnProcess()
{
// для каждого алерта добавляем по пакетной стратегии
strategy_parent = new BatchStrategy(BatchFinishModes.First) { IsParallel = true };
foreach (Alert alert in alerts)
{
var strategy_for_alert = new RegisterAlertToSmartStrategy(alert);
strategy_for_alert.IsParallel = true;
strategy_parent.ChildStrategies.Add(strategy_for_alert);
}
base.ChildStrategies.Add(strategy_parent);
}
-----------------------
class RegisterAlertToSmartStrategy : ActionStrategy
...
Дочерняя стратегия добавляется и запускается - все ОК. Затем на следующей итерации мне необходимо остановить эту дочернюю стратегию:
Code
protected override StrategyProcessResults OnProcess()
{
...
strategy_parent.Stop();
<дожидаемся остановки стратегии>
<дальнейшие действия>
}
Проблема в том, что я не могу дождаться остановки. Она происходит только после того, как OnProcess() главной стратегии отработает до конца. Это ошибка или по дизайну так задумано? Как можно эту ситуацию обойти?