Отработка Connect / Reconnect

Отработка Connect / Reconnect
Atom
3/10/2011
igork


Михаил, в соответствии с примерами, дизайним форму, на которой две кнопки 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?

Спасибо.


Tags:


Thanks:


Greene-nsk

Avatar
Date: 3/10/2011
Reply


this.objMainTrader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;

По идее это означает, что переподключение должно производиться только во время работы RTS. Естественно, ночью переподключения не будет.

Попробуйте Exchange.Test.WorkingTime, которая не имеет ограничений времени.

Thanks:

igork

Avatar
Date: 3/10/2011
Reply


Спасибо. Но для особо тупых было бы неплохо упомянуть такую фичу в документации :-)

Thanks:


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

loading
clippy