ReConnection не работает

ReConnection не работает
Atom
3/16/2011
Greene-nsk


            (this.Trader as SmartTrader).ReConnectionSettings.Interval = TimeSpan.FromSeconds(20);
            (this.Trader as SmartTrader).ReConnectionSettings.WorkingTime = Exchange.Test.WorkingTime;
            (this.Trader as SmartTrader).ReConnectionSettings.ConnectingAttemptCount = -1;

Подписан на события: this.Trader.Connected this.Trader.Disconnected this.Trader.ProcessDataError this.Trader.ConnectionError

Запускаю, отключаю свой вайфай через который раздается инет, через минуту получаю this.Trader.Disconnected. Жду 5 минут - ничего не происходит. Включаю инет обратно, жду 5 минут - ничего не происходит.


Tags:


Thanks:


1 2  >
Greene-nsk

Avatar
Date: 3/16/2011
Reply


[3.0.16]

Thanks:

Mikhail Sukhov

Avatar
Date: 3/16/2011
Reply


Greene-nsk: (this.Trader as SmartTrader).ReConnectionSettings.Interval = TimeSpan.FromSeconds(20); (this.Trader as SmartTrader).ReConnectionSettings.WorkingTime = Exchange.Test.WorkingTime; (this.Trader as SmartTrader).ReConnectionSettings.ConnectingAttemptCount = -1;

Подписан на события: this.Trader.Connected this.Trader.Disconnected this.Trader.ProcessDataError this.Trader.ConnectionError

Запускаю, отключаю свой вайфай через который раздается инет, через минуту получаю this.Trader.Disconnected. Жду 5 минут - ничего не происходит. Включаю инет обратно, жду 5 минут - ничего не происходит.

ConnectingAttemptCount - это для первоначального соединения. Протестил у себя (выключил адаптер, подождал ConnectionError, кстати, без Disconnected) - у меня все поднялось штатно.

Thanks:

Greene-nsk

Avatar
Date: 3/16/2011
Reply


Мне надо как-то решить эту проблему. При реальной торговле тоже это периодически происходит. Никакого ConnectionError не приходит. Просто ITrader.Disconnected. И соединение после этого не восстанавливается, можно ждать хоть несколько часов.

Thanks:

Greene-nsk

Avatar
Date: 3/16/2011
Reply


Также я пробовал заменить автоматический реконнект своим, раз уж он не работает:


                    // подписываемся на событие разрыва соединения
                    this.Trader.Disconnected += () =>
                    {
                        this.IsConnected = false;

                        if (!_IsDisconnectScheduled)
                        {
                            Log.OutError("Произошел незапланированный разрыв связи.");
                            int secToWait = 20;
                            Log.Out("Ждем " + secToWait + " секунд и восcтанавливаем соединение.", LogLevel.notice);
                            Common.Async(() =>
                                {
                                    Thread.Sleep(TimeSpan.FromSeconds(secToWait));
                                    this.Connect();
                                });
                        }
                        else
                        {
                            Log.Out("Соединение разорвано.", LogLevel.notice);
                        }
                    };

                    // подписываемся на событие успешного соединения
                    this.Trader.Connected += () =>
                    {
                        this.IsConnected = true;
                        Log.Out("Соединение установлено.", LogLevel.notice);

                        // запускаем экпорт, если не запущен
                        if (!this.Trader.IsExportRunning)
                        {
                            Log.Out("Запускаем экспорт " + Const.TraderType + " ...", LogLevel.notice);
                            this.Trader.StartExport();
                        }

                        _ConnectHandle.Set();
                    };

После такого восстановления соединение восстанавливается, но события перестают приходить. Это описано в http://stocksharp.com/forum/1446/sobytiia-nie-prikhodiat-poslie-riestarta-soiedinieniia/ . Видимо регистрация слетает , и надо заново регистрировать все бумаги?

Thanks:

Mikhail Sukhov

Avatar
Date: 3/16/2011
Reply


Greene-nsk: Мне надо как-то решить эту проблему. При реальной торговле тоже это периодически происходит. Никакого ConnectionError не приходит. Просто ITrader.Disconnected. И соединение после этого не восстанавливается, можно ждать хоть несколько часов.

Если приходит Disconnected, то переподключение не будет работать. Оно работает только в случае ошибок. Вы точно принудительно не отключаетесь от SmartCOM? Подпишитесь как здесь показали на событие Disconnected у StClient. Интересна причина разрыва.

Thanks:

Greene-nsk

Avatar
Date: 3/16/2011
Reply


Mikhail Sukhov:

Greene-nsk: Мне надо как-то решить эту проблему. При реальной торговле тоже это периодически происходит. Никакого ConnectionError не приходит. Просто ITrader.Disconnected. И соединение после этого не восстанавливается, можно ждать хоть несколько часов.

Если приходит Disconnected, то переподключение не будет работать. Оно работает только в случае ошибок. Вы точно принудительно не отключаетесь от SmartCOM? Подпишитесь как здесь показали на событие Disconnected у StClient. Интересна причина разрыва.

reason приходит пустой. Как насчет восстановления, описанного в моем предыдущем посте? Перезапускать регистрацию?

Thanks:

Mikhail Sukhov

Avatar
Date: 3/16/2011
Reply


Greene-nsk: После такого восстановления соединение восстанавливается, но события перестают приходить. Это описано в http://stocksharp.com/forum/1446/sobytiia-nie-prikhodiat-poslie-riestarta-soiedinieniia/ . Видимо регистрация слетает , и надо заново регистрировать все бумаги?

Я же там ответил насчет инструментов и портфелей.

Thanks:

Mikhail Sukhov

Avatar
Date: 3/16/2011
Reply


Greene-nsk: reason приходит пустой.

Это значит штатное отсоединение. Вы Dispose, Disconnect где-то вызываете?

Thanks:

Greene-nsk

Avatar
Date: 3/16/2011
Reply


Mikhail Sukhov:

Greene-nsk: reason приходит пустой.

Это значит штатное отсоединение. Вы Dispose, Disconnect где-то вызываете?

Не вызываю. Когда вызывается Disconnect(), приходит Reason: disconnected by user.

Thanks:

Mikhail Sukhov

Avatar
Date: 3/16/2011
Reply


Greene-nsk:

Mikhail Sukhov:

Greene-nsk: reason приходит пустой.

Это значит штатное отсоединение. Вы Dispose, Disconnect где-то вызываете?

Не вызываю. Когда вызывается Disconnect(), приходит Reason: disconnected by user.

Сначала разберемся что к чему, потом я точечно исправлю.[smile]

Thanks:
1 2  >

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

loading
clippy