← 戻る

S# 4.2.1.5 Не отрабатывает ReConnect после ночи.

API: 4.2.1.5 Connector: SmartCom 3.0 ver. 3.0.79 Сервер: основной Пример: SampleSmart Запуск: exe из папки с примерами.

Ночью, когда биржа не работает вылазит exception, приведенный ниже, который обрабатывается и перехватывается программой, поэтому программа не вываливается и это хорошо.


Ошибка обработки данных

System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'DisconnectMessage'. ---> System.InvalidOperationException: connection closed by server (82.204.220.34:8090)

--- Конец трассировки внутреннего стека исключений ---

ОК

Но если все оставлять как есть, то в 10 утра, когда биржа начнет работать - новые данные приходить не будут, нужно перезапускать программу. Повторить ошибку можно следующим образом: запустить в вечернюю сессию SampleSmart, выбрать стакан по какому-нибудь фьючерсу, оставить все на ночь. Ошибка вылезет в MessageBox.

このトピックは参考になりましたか?

トピックを共有

コメント (5)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Mikhail Sukhov
Mikhail Sukhov

alexan3010: Но если все оставлять как есть, то в 10 утра, когда биржа начнет работать - новые данные приходить не будут, нужно перезапускать программу.

Нужны логи. Конкретно, строчки, начинающиеся со фразы RCM:

alexan3010
alexan3010 著者

Ok, сегодня на ночь запущу, завтра постараюсь выдать.

alexan3010
alexan3010 著者

В мой лог свалилась только одна запись System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'DisconnectMessage'. ---> System.InvalidOperationException: connection closed by server (82.204.220.34:8090)

никаких других нет. Вы можете повторить эту ошибку на своей системе, я описал как.

shumilov
shumilov

https://cloud.mail.ru/public/4296580edbc9/Animation%20(1).gif Коллеги! Прошу ответить, кто ещё сталкивался с подобной проблемой и есть ли решение? Повторить подобную ситуацию просто, достаточно запустить свою программу, соединиться с сервером брокера и разорвать интернет соединение.

agat50
agat50

4.3.13 x86 Ловлю похожую ошибку просто при отключении кабеля у виртуалки:


2016/06/02 17:09:28.055|Error  |BasketMessageAdapter|Error disconnecting for ChannelMessageAdapter: System.InvalidOperationException: an existing connection was forcibly closed by the remote host.
 (213.247.232.236:8090)
2016/06/02 17:09:28.055|Error  |SmartTrader|System.InvalidOperationException: Connection in state Connected received an unexpected message of type 'DisconnectMessage'. ---> System.InvalidOperationException: an existing connection was forcibly closed by the remote host.
 (213.247.232.236:8090)
   --- End of inner exception stack trace ---
2016/06/02 17:09:28.061|Error  |VisualMacd|_smartTrader.Error :    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at VisualMacd.MainWindow.<ConnectBtn_Click>b__11_7(Exception error) in E:\Projects\Exchange\StockSharpProjects\VisualMacd\VisualMacd\MainWindow.xaml.cs:line 199
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Algo.Connector.RaiseError(Exception exception)
   at StockSharp.Algo.Connector.ProcessConnectMessage(BaseConnectionMessage message)
   at StockSharp.Algo.Connector.OnProcessMessage(Message message)
   at StockSharp.SmartCom.SmartTrader.OnProcessMessage(Message message)
   at StockSharp.Algo.Connector.OutMessageChannelOnNewOutMessage(Message message)
   at Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   at StockSharp.Messages.InMemoryMessageChannel.<Open>b__1()
   at Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e()
   at Ecng.Common.Converter.DoInCulture[T](CultureInfo cultureInfo, Func`1 func)
   at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Action action)
   at StockSharp.Messages.InMemoryMessageChannel.<Open>b__0()
   at Ecng.Common.ThreadingHelper.<>c__DisplayClass10.<Thread>b__f()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Настройки переподключения такие:


_SmartTrader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
_SmartTrader.ReConnectionSettings.ReAttemptCount = -1;
_SmartTrader.ReConnectionSettings.TimeOutInterval = TimeSpan.FromSeconds(15);
_SmartTrader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;

_SmartTrader остаётся в состоянии Connected, после восстановления связи сообщение Restored не появляется (подписка на event есть), свечки не идут. SmartCOM 3.0