Снова ActionStrategy в 2.5.2
							
							
						 
						
						
						
						
	
			Добрый день уважаемым Михаилу и коллегам.
Остаются вопросы по работе ActionStrategy в 2.5.2
Вот простой пример (ниже), который работает как и ожидается - т.е. просто переодически выводит
слово "Работает" плюс текущее время 
Но, есть два вопрса
1. Судя по выводу When отрабатывает раз в секунду а не за Interval стратегии который я пытался установить (см. в  TryCreateStrategy    
  _strat.Interval = TimeSpan.FromSeconds(0.10);)
2. Если в стратегии переписать OnProcess,  например так
Code 
  protected override StrategyProcessResults OnProcess()
        {
              return StrategyProcessResults.Continue;
        }  
 то стратегия просто перестанет выполняться.  Что я снова сделал не так?
Спасибо и с уважением!
Пример привожу полностью можете легко воспроизвести у себя
Code
namespace test
{
    using System;
    using System.Linq;
    using System.Threading;
    using System.Collections.Generic;
    using System.ComponentModel;
  
    using Ecng.Trading.Algo;
    using Ecng.Trading.Algo.Candles;
    using Ecng.Trading.Algo.Strategies;
    using Ecng.Trading.Algo.Logging;
    using Ecng.Trading.BusinessEntities;
    using Ecng.Trading.Quik;
    using Ecng.Interop;
    using Ecng.Data;
    using Ecng.Common;
    using Ecng.ComponentModel;
   
    public class Program
    {
        private static TestStrategy _strat;
        private static StrategyManager _manager;
        private static Portfolio _port;
        private static Security _sec;
        private static QuikTrader _trader;
        private static void OnLog(Strategy strategy, StrategyErrorStates errorState, string message)
        {
            // если стратегия вывела не просто сообщение, то вывести на экран.
            //            if (errorState != StrategyErrorStates.None)
            Console.WriteLine(message);
        }
       
        private static void TryCreateStrategy()
        {
                _strat = new TestStrategy() { Volume=1};
                _strat.Log += OnLog;
                _strat.PropertyChanged += OnStrategyPropertyChanged;
                _manager.Register(_strat, _port, _sec);
                _strat.Interval = TimeSpan.FromSeconds(0.10);
                _strat.I = 0;
                _strat.Start();
                var logger = new FileStrategyLogger("mylog.txt");
               logger.Strategies.Add(_strat);
        }
        static void Main()
        {           
                     using (var waitHandle = new ManualResetEvent(false))
                {
       
                _trader = new QuikTrader();
                _trader.Connect();
                _trader.NewPortfolios += portfolios =>
                {
                    if (_port == null)
                    {
                        _port = portfolios.FirstOrDefault();
                        if (_port != null)
                        {
                            Console.WriteLine("Портфель {0} появился.", _port.Name);                        
                                waitHandle.Set();
                        }
                    }
                };
                _manager = new StrategyManager(_trader);
                _trader.NewSecurities += securities =>
                {
                    if (_sec == null)
                    {
                        _sec = securities.FirstOrDefault(sec => sec.Code == "SRZ0");
                        if (_sec != null)
                        {
                            Console.WriteLine(_sec.Code+" появился");
                            waitHandle.Set();
                        }
                    }
                 };
                waitHandle.WaitOne();
                _trader.IsAsyncMode = true;
                _trader.Terminal.StartDde(new[] { _trader.SecuritiesTable }); 
                
                _trader.Connected += () =>
                {
                    Console.WriteLine("Connected");
                    waitHandle.Set();
                };
                waitHandle.WaitOne();
                TryCreateStrategy();
                        Console.WriteLine("Чтобы закончить, нажмите любую кнопку...");
                        Console.Read();
            }
        }
        static private void OnStrategyPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            Console.WriteLine("process state: " + _strat.ProcessState);
            Console.WriteLine("PnL: " + _strat.PnLManager.PnL);
            Console.WriteLine("slippage: " + _strat.SlippageManager.Slippage);
            Console.WriteLine("Position: " + _strat.PositionManager.Position);
            Console.WriteLine("Latency: " + _strat.LatencyManager.Latency);
        }
        private static void OnError(Exception error)
        {
            Console.BackgroundColor = ConsoleColor.White;
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(error);
            //           Console.Read();
        }
    }
       class TestStrategy : ActionStrategy
    {
        
        private int i=0;
     
        public int I
        {
            get { return i; }
            set
            {
                i = value;
                When(     () => true ).
            Do(() => {
                Console.WriteLine("Работает "+DateTime.Now.TimeOfDay);
                    
                         }).
            MakePeriodical(); 
            }
        }
        
        //не работает если раскомментировать OnProcess
/*
  protected override StrategyProcessResults OnProcess()
        {
  
            return StrategyProcessResults.Continue;
        }  
 */
    }
           
}