﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Проблемы при переподключении.</title>
  <id>~/topic/2908/problemy-pri-perepodklyuchenii_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-07T03:05:30Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2908" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/24141/</id>
    <title type="text">В общем кому интересно, выкладываю вариант с рабочим переподключением (исправил как сам думаю). Прот...</title>
    <published>2013-02-20T18:04:41Z</published>
    <updated>2013-02-20T18:04:41Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;В общем кому интересно, выкладываю вариант с рабочим переподключением (исправил как сам думаю). Протестировал. Изменил всего 2 метода(жирный шрифт).&lt;/p&gt;
&lt;p&gt;&lt;u&gt;1-PlazaTrader.cs Перезапуск роутера при соединении:&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;protected override void OnConnect()
{
// Для удобства проверяем, запущен ли P2MQRouter.exe?
// Если это не делать, COM-библиотека Плазы будет выкидывать одну и ту же ошибку ('Couldn't resolve MQ service'),
// и когда P2MQRouter.exe не запущен,
// и когда нет связи с сервером Плазы или не ведутся торги.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;		//if (_connectionPool.IsLocal &amp;amp;&amp;amp; Router.Status != ServiceControllerStatus.Running)
		//    throw new InvalidOperationException(&amp;quot;На компьютере не установлена или не запущена программа P2MQRouter.exe.&amp;quot;);
        **Router.Restart();
        while (Router.Status != System.ServiceProcess.ServiceControllerStatus.Running)
        {
            System.Threading.Thread.Sleep(200);
        }**
		_transactionManager.Start();

		_connectionPool.Connect();

		this.AddInfoLog(&amp;quot;OnConnect&amp;quot;);
	}
&lt;/code&gt;&lt;/pre&gt;
&lt;u&gt;
2 - PlazaConnectionPool.cs принудительный вызов события disconnected при вызове метода Disconnect()&lt;/u&gt;
&lt;pre&gt;&lt;code&gt;	public void Disconnect()
	{
		_connectDone = false;
		ChangeConnection(Disconnect);
        **_disconnected();
        IsConnected = false;**
	}
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24140/</id>
    <title type="text">Ну я тоже не сразу разобрался. Суть в том что, PlazaTrader выдает событие Disconnect 1 раз при обрыв...</title>
    <published>2013-02-20T11:31:50Z</published>
    <updated>2013-02-20T11:51:44Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Ну я тоже не сразу разобрался. Суть в том что, PlazaTrader выдает событие Disconnect 1 раз при обрыве связи, а ReConnectionMasnager ждет его каждый раз при переподключении, поэтому вылезает таймаут. Соответсвенно выхода 2, выдавать его либо не ждать.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24137/</id>
    <title type="text">Я совсем запутался.[sad] </title>
    <published>2013-02-20T11:04:30Z</published>
    <updated>2013-02-20T11:04:30Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Я совсем запутался.[sad]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24136/</id>
    <title type="text">Оно приходит один раз, при разрыве связи, а ReConnectionManager, вызывает Trader.Reconnect через инт...</title>
    <published>2013-02-20T09:41:34Z</published>
    <updated>2013-02-20T09:41:34Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Оно приходит один раз, при разрыве связи, а ReConnectionManager, вызывает Trader.Reconnect через интервалы, в PlazaTrader метод Reconnect не определен, он определен только в BaseTrader
public virtual void Reconnect()
{
SafeDisconnect();
Connect();
}
SafeDisconnect(); вызывает Disconnect всегда т.к. IsConnected закоментарен. Disconnect опять же определен только в BaseTrader
public void Disconnect()
{
_reConnectionManager.Disconnect(() =&amp;gt; RaiseConnectionError(new TimeoutException(&amp;quot;Соединение не было разорвано в отведенный отрезок времени.&amp;quot;)));
OnDisconnect();
}&lt;/p&gt;
&lt;p&gt;т.е. ReConnectionManager ждет событие каждый раз при реконнекте, тут надо либо раскоментарить IsConnected или переопределить Disconnect() Reconnect() в PlazaTrader&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24135/</id>
    <title type="text">Garry: Еще и в BaseTrader метод SafeDisconnect вызывает Disconnect(); без проверки (почему-то if (Is...</title>
    <published>2013-02-20T08:42:04Z</published>
    <updated>2013-02-20T08:42:04Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24132)" rel="nofollow" target="_blank"&gt;Garry&lt;/a&gt;:&lt;/strong&gt;
Еще и в BaseTrader метод SafeDisconnect вызывает Disconnect(); без проверки (почему-то if (IsConnected) закоментарен) Соответсвенно ReConectionManager ждет события Trader.Disconnected, которого никогда не будет. Из-за этого вылезает ошибка таймаута:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;IsConnected закомментарен, потому что он сам может вызвать исключение. Поэтому всегда вызывается отключение, Disconnect. После его вызова и должно прийти событие успешного отключения. Почему оно не приходит?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24132/</id>
    <title type="text">Еще и в BaseTrader метод SafeDisconnect вызывает Disconnect(); без проверки (почему-то if (IsConnect...</title>
    <published>2013-02-19T20:17:23Z</published>
    <updated>2013-02-19T20:17:23Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Еще и в BaseTrader метод SafeDisconnect вызывает Disconnect(); без проверки (почему-то if (IsConnected) закоментарен) Соответсвенно ReConectionManager ждет события Trader.Disconnected, которого никогда не будет. Из-за этого вылезает ошибка таймаута:
2013/01/15 12:44:09.353|Error |PlazaTrader|System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;            private void SafeDisconnect()
	{
		try
		{
			**//if (IsConnected)**
			Disconnect();
		}
		catch (Exception ex)
		{
			RaiseConnectionError(ex);
		}
	}
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/24069/</id>
    <title type="text">Посмотрел исходники, поэкспериментировал с проблемой, действительно роутер ведет себя как то странно...</title>
    <published>2013-02-17T09:55:03Z</published>
    <updated>2013-02-17T09:55:57Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Посмотрел исходники, поэкспериментировал с проблемой, действительно роутер ведет себя как то странно после восстановления связи, постоянные ошибки&lt;/p&gt;
&lt;p&gt;2013/02/17 13:34:38.102|Error  |PlazaTrader|StockSharp.Plaza.PlazaException: Ошибка подключения к серверу Плазы. Код -2147196927, описание 'P2ERR_MQ_NOT_INITIALIZED_YET'. ---&amp;gt; System.Runtime.InteropServices.COMException: Couldn't connect to MQ&lt;/p&gt;
&lt;p&gt;, хотя до этого все локальные соединения были корректно завершены. Возможно действительно проблема в Роутере(та что выше по ссылке на форум РТС). Рестарт роутера помогает, добавил Router.Restart(); в метод OnConnect() Плаза трейдера, пересобрал, все отлично восстанавливается. Но вот рестарт роутера при каждой попытке соединения, уж больно радикальное решение, хотя все же решение.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/23462/</id>
    <title type="text">Как только у разработчиков будет время - сразу сделаем. </title>
    <published>2013-01-15T18:13:44Z</published>
    <updated>2013-01-15T18:13:44Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Как только у разработчиков будет время - сразу сделаем.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/23449/</id>
    <title type="text">Ну есть перспективы решения? просто уже 5 месяцев прошло, вроде довольно ходовой коннектор, а переза...</title>
    <published>2013-01-15T16:49:08Z</published>
    <updated>2013-01-15T16:49:08Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Ну есть перспективы решения? просто уже 5 месяцев прошло, вроде довольно ходовой коннектор, а перезапускать робота, если пропадет инет как то не хотелось бы. Вот, может быть оно? &lt;a href="http://forum.rts.micex.ru/viewtopic.asp?t=19453" rel="nofollow" target="_blank"&gt;http://forum.rts.micex.ru/viewtopic.asp?t=19453&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/23438/</id>
    <title type="text">Проблема известна и уже была занесена в список тасков ранее. </title>
    <published>2013-01-15T16:00:00Z</published>
    <updated>2013-01-15T16:00:00Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Проблема известна и уже была занесена в список тасков ранее.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/23419/</id>
    <title type="text">Аналогичная проблема, после попытки переподключения в логе ошибка 2013/01/15 12:44:09.353|Error |Pla...</title>
    <published>2013-01-15T08:49:44Z</published>
    <updated>2013-01-15T08:49:44Z</updated>
    <author>
      <name>Garry</name>
      <uri>https://stocksharp.ru/users/430/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Аналогичная проблема, после попытки переподключения в логе ошибка
2013/01/15 12:44:09.353|Error  |PlazaTrader|System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени. И все на этом стопорится.
Коннектор из S# 4.1.7 с кодплекса, роутер 1.4.11_32&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21125/</id>
    <title type="text">Если это ко мне вопрос, то нет, у меня такого нет. В _trader.Disconnected просто логируется информац...</title>
    <published>2012-08-31T10:34:43Z</published>
    <updated>2012-08-31T10:34:43Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.ru/users/6182/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Если это ко мне вопрос, то нет, у меня такого нет.
В  _trader.Disconnected просто логируется информация.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/21025/</id>
    <title type="text">У вас в коде нигде нет подобных строчек _trader.Disconnected += _trader.Connect; Ну или может быть ч...</title>
    <published>2012-08-25T04:41:03Z</published>
    <updated>2012-08-25T04:41:03Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;У вас в коде нигде нет подобных строчек&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;_trader.Disconnected += _trader.Connect;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ну или может быть что нить типо такого&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;_trader.Disconnected += DoSomeThing;

// какойто код

private void DoSomeThing()
{
     // какой то код
     _trader.Connect;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;На плазе не проверял но на АльфаДирект это четко приводит к вышеописанной ошибке. Отвал событий, экспорта данных и прочих радостей. Подозреваю что связано с прямой передачей событий от терминала/шлюза в коннектор. Что приводит к эдакому дедлоку чтоли :)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20973/</id>
    <title type="text">Подтверждаю багу в ReConnectManager. только у меня не отваливается коннектор. Просто мессадж падает ...</title>
    <published>2012-08-23T07:07:55Z</published>
    <updated>2012-08-23T07:08:48Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Подтверждаю багу в ReConnectManager. только у меня не отваливается коннектор. Просто мессадж падает в лог об ошибке. И все.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;09:14:13.937 | Error      | AlfaTrader      | System.TimeoutException: Соединение не было установлено в отведенный отрезок времени.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Потом все работает норм. У меня правда AlfaDirect&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20653/</id>
    <title type="text">Ну сорсы плазы у тебя уже есть, так что разбираться в connect + com можно Разработчики заняты слишко...</title>
    <published>2012-08-04T16:33:20Z</published>
    <updated>2012-08-04T16:33:20Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Ну сорсы плазы у тебя уже есть, так что разбираться в connect + com можно&lt;/p&gt;
&lt;p&gt;Разработчики заняты слишком другими вопросами сейчас.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20652/</id>
    <title type="text">[smile] Лучше конечно решение на блюдечке [smile] Тут больше проблема на мой взгляд не в ReConnectio...</title>
    <published>2012-08-04T16:31:48Z</published>
    <updated>2012-08-04T16:31:48Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.ru/users/6182/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[smile]&lt;/p&gt;
&lt;p&gt;Лучше конечно решение на блюдечке [smile]&lt;/p&gt;
&lt;p&gt;Тут больше проблема на мой взгляд не в ReConnectionManager.
Так как заливка данных возобновляется, работает секунд 15 и отваливается.&lt;/p&gt;
&lt;p&gt;Подозреваю, здесь где-то косяк на уровне:
(конструктор PlazaTrader или метод Connect) + (регистрация COM объекта).&lt;/p&gt;
&lt;p&gt;Поэтому сорсы ReConnectionManager вряд ли помогут.
Тут надо хорошо разбираться в процессе соединения c роутером в PlazaTrader.
А этот процесс я не совсем хорошо понимаю, так как не разбирался досконально в Плазе2.&lt;/p&gt;
&lt;p&gt;Но... Если конечно никто из разработчиков этим вопросом заниматься не планирует,
кидай сорсы. Буду ковыряться.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20651/</id>
    <title type="text">Могу предоставить исходники ReConnectionManager чтобы ты попробовал самостоятельно разобраться с дан...</title>
    <published>2012-08-04T16:22:23Z</published>
    <updated>2012-08-04T16:22:23Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Могу предоставить исходники ReConnectionManager чтобы ты попробовал самостоятельно разобраться с данной проблемой.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20648/</id>
    <title type="text">Этот вопрос не связан с ревизиями. Про ревизии сейчас напишу в том топике. </title>
    <published>2012-08-04T16:04:20Z</published>
    <updated>2012-08-04T16:04:20Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.ru/users/6182/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Этот вопрос не связан с ревизиями.
Про ревизии сейчас напишу в том топике.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20647/</id>
    <title type="text">Maxim: «Бен, это Данила, ай нид хелп» С ревизиями вопрос решился? </title>
    <published>2012-08-04T15:13:07Z</published>
    <updated>2012-08-04T15:13:07Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(20646)" rel="nofollow" target="_blank"&gt;Maxim&lt;/a&gt;:&lt;/strong&gt;
«Бен, это Данила, ай нид хелп»&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;С ревизиями вопрос решился?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/20646/</id>
    <title type="text">«Бен, это Данила, ай нид хелп» </title>
    <published>2012-08-04T15:03:22Z</published>
    <updated>2012-08-04T15:03:22Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.ru/users/6182/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;«Бен, это Данила, ай нид хелп»&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>