[normal] параллельная дочерняя стратегия не параллельна


[normal] параллельная дочерняя стратегия не параллельна
Atom Reply
2/11/2011


Очень понравилась идея с дочерними стратегиями и достаточно элегантная реализация. Спасибо, Михаил.

Наткнулся на небольшую проблему. Есть стратегия, производная от 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() главной стратегии отработает до конца. Это ошибка или по дизайну так задумано? Как можно эту ситуацию обойти?

Tags:


Thanks:




1 Answers
Mikhail Sukhov

Avatar
Date: 3/23/2011
Reply


Greene-nsk Go to

Проблема в том, что я не могу дождаться остановки. Она происходит только после того, как OnProcess() главной стратегии отработает до конца. Это ошибка или по дизайну так задумано? Как можно эту ситуацию обойти?


Например, корневую пакетную стратегию, куда добавляются дочерние, сделать не параллельной.
Thanks:


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

loading
clippy