this.Trader = new QuikTrader(this.Path.Text);
this.Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
this.Trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
this.Trader.ReConnectionSettings.ExportTimeOutInterval = TimeSpan.FromSeconds(30);
this.Trader.ReConnectionSettings.ExportTimeOut += delegate { MessageBox.Show("Данные не поступают."); };
Такой код извещал о не поступлении данных примерно раз в 1,3 минуты, а не в 30 сек, при реальном отсутсвии данных. В чем может быть проблема?
Если поставить TimeSpan.FromSeconds(60);, то первое сообщение будет примерно через 1,47 второе через 2 минуты, третье ещё через 2.
Comments (4)
Login or Create account, Log in or register to leave a comment
Подпишитесь на событие NewDataExported с распечаткой времени последних данных Также добавьте время вывода сообщения по событию ExportTimeOut
Всё работает следующим образом: раз в ExportTimeOutInterval мы смотрим - если разница между нынешним временем и последним временем NewDataExported больше ExportTimeOutInterval то поднимаем ExportTimeOut
Поэтому вполне может быть следующее: в 10:14:29 посмотрели - данные идут, всё ок в 10:14:30 пришли данные, обновили время последнего прихода данных в 10:14:59 посмотрели - разница между текущим временем и последним приходом = 29 секунд < 30 - всё ок в 10:15:29 посмотрели - разница = 59 секунд > 30 - подняли событие
в итоге от остановки данных до события прошло 59 секунд. у вас вполне возможно такая ситуация
Значит моё предположение верное, всё работает согласно тому, как я написал. Если хотите быстрее - уменьшайте таймаут в 2 раза.
Скажите пожалуйста, что именно понимается под данными? Стакан, сделки, ещё что-то? На что ориентируется ExportTimeOut и от чего он отсчитывает отсутсвие данных?
Любые по которым запущен экспорт