Для изменения размера нажмите или перетащите
Переподключение

Класс Connector (от которого наследуют шлюзы QuikTrader и SmartTrader) реализует в своем коде механизм мониторинга соединений. Такой механизм настраивается через свойство ConnectorReConnectionSettings и позволяет отслеживать следующие сценарии ошибок:

  1. Невозможно установить соединение (отсутствует связь, неправильный логин-пароль и т.д.). Через свойство ReConnectionSettingsAttemptCount задается количество попыток для установки соединения. По умолчанию оно равно 0, что означает, что режим отключен. -1 означает бесконечное количество попыток.
  2. Соединение было разорвано в процессе работы. Через свойство ReConnectionSettingsReAttemptCount задается количество попыток для переустановки соединения. По умолчанию оно равно 100. -1 означает бесконечное количество попыток. 0 - режим отключен.
  3. В процессе установки или отключения соединения соответствующие события IConnectorConnected или IConnectorDisconnected могут не приходить долгое время. Для таких ситуаций можно использовать свойство ReConnectionSettingsTimeOutInterval, чтобы задать максимально допустимое время отсутствия успешного события. Если по истечению данного времени желаемое событие не возникает, то вызывается событие IConnectorConnectionError с ошибкой окончания ожидания.

Использование механизма контроля соединения

  1. В качестве демонстрации взят пример SampleSmart, работающий с SmartCOM.

    При создании шлюза необходимо проинициализировать настройки механизма переподключений через свойство ConnectorReConnectionSettings:

    C#
    // инициализируем механизм переподключения (будет автоматически соединяться
    // каждые 10 секунд, если шлюз потеряется связь с сервером)
    Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
    
    // переподключение будет работать только во время работы биржи РТС
    // (чтобы отключить переподключение когда торгов нет штатно, например, ночью)
    Trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
    
    // подписываемся на событие об успешном восстановлении соединения
    Trader.ReConnectionSettings.ConnectionRestored += () => this.GuiAsync(() => MessageBox.Show(this, "Соединение восстановлено"));
    
    // подписываемся на событие разрыва соединения
    Trader.ConnectionError += error => this.Sync(() => MessageBox.Show(this, error.ToString()));
  2. Чтобы проверить, как работает механизм, можно, к примеру, выключить подключение к Интернету:

    Внешние транзакции.

  3. Программа просигнализирует о потере соединения:

    Разрыв соединения.

  4. После включения внешних транзакций обратно, программа выведет сообщение об успешном восстановлении соединения:

    Восстановление соединения.