Отработка Connect / Reconnect
Михаил, в соответствии с примерами, дизайним форму, на которой две кнопки Connect и Disconnect. Полезной нагрузки нет.
Код кнопки Connect:
....
if (this.objMainTrader == null)
{
this.objMainTrader = new SmartTrader(strLogin, strPWD, objIPEndPoint);
this.objMainTrader.Connected += () => { this.SmartConnectStatusSucced(); };
this.objMainTrader.ConnectionError += error => { this.SmartConnectStatusFailed(error); };
this.objMainTrader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
this.objMainTrader.ReConnectionSettings.ConnectDisconnectTimeOutInterval = TimeSpan.FromSeconds(60);
this.objMainTrader.ReConnectionSettings.ReConnectingAttemptCount = 1000; // здесь пробовал -1, на поведение не влияет
this.objMainTrader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
this.objMainTrader.ReConnectionSettings.ConnectionAttemptError += error =>
{ this.SmartReConnectStatusFailed(error); };
this.objMainTrader.ReConnectionSettings.ConnectionRestored += () =>
{ this.SmartReConnectStatusSucced(); };
}
// try to connect to the server
if (!this.objMainTrader.IsConnected)
this.objMainTrader.Connect();
.....
Все функции, которые вызываются, тупо создают соединение с базой SQL Server и пишут сообщение с именем вызванной функции. Итого, что происходит.
При нажатии кнопки Connect код аккуратно отрабатывает, и SmartConnectStatusSucced тоже.
Далее, на виртуальной машине (Tools -> Settings) отключаем сетевую карту. Очень быстро отрабатывает SmartConnectStatusFailed, в журнал записывается следующее сообщение:
<Timeout detected. Check your internet connectivity or event handler code>.
Далее я ожидаю, что в соответствии с настройками ReconnectionSettings, objMainTrader будет пытаться производить повторное подключение. Ждем 5 минут, но ничего не происходит. Выставленные в отладчике точки прерывания тоже не срабатывают.
Обратно возвращаемся к настройкам виртуальной машины, и возвращаем на место сетевой адаптер. Сеть восстанавливается, но объект этого не замечает.
Прошу подсказать, что делаю не так. Возможно, нужно запустить какие-то операции, обращаться к объекту и т.п., чтобы код переподключения заработал?
P.S. Библиотеки версии 3.0.8.
P.P.S. Готов выложить проект, скриншоты и how to reproduce, но форум не позволяет.
P.P.P.S. Может ли причина заключаться в том, что тесты производятся в ночное время? :-) Если да, то исчезнет ли проблема, если подменить WorkingTime?
Спасибо.