﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">При тестировании выдает исключение  ContextSwitchDeadlock was detected</title>
  <id>~/topic/3291/pri-testirovanii-vydaet-isklyuchenie--contextswitchdeadlock-was-detected/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-20T12:13:08Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3291" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/23320/</id>
    <title type="text">я думаю сделать обновление с каким-нибудь интервалом, например раз в секунду или по какому-то другом...</title>
    <published>2013-01-11T13:32:19Z</published>
    <updated>2013-01-11T13:32:19Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</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.com/posts/m/23319/</id>
    <title type="text">Сталкивался с подобной ситуацией. Когда во время тестирования выводил свечки с отрисованными трейдам...</title>
    <published>2013-01-11T13:27:03Z</published>
    <updated>2013-01-11T13:27:03Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.com/users/5973/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Сталкивался с подобной ситуацией. Когда во время тестирования выводил свечки с отрисованными трейдами. Все жутко тормозило.&lt;/p&gt;
&lt;p&gt;В итоге тестирование делается без &amp;quot;визуализации&amp;quot;. А потом, после завершения, все одним разом добавляется на график.&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.com/posts/m/23318/</id>
    <title type="text">Закоментировал : //_strategy.PnLChanged += () =&amp;gt; //{ // var data = new EquityData // { // Time = _st...</title>
    <published>2013-01-11T13:13:55Z</published>
    <updated>2013-01-11T13:18:41Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Закоментировал :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
//_strategy.PnLChanged += () =&amp;gt;
            //{
            //    var data = new EquityData
            //    {
            //        Time = _strategy.GetMarketTime(),
            //        Value = _strategy.PnL,
            //    };

            //    this.GuiAsync(() =&amp;gt;
            //    {
            //        _curveItems.Add(data);
            //      
               
            //};

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;и все залетало ))) скорость огромная без тормозов и т.д.&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.com/posts/m/23317/</id>
    <title type="text">profts: Вот такую штуку выдает: Откройте в древовидном виде, чтоб было понятно, что зачем вызывается...</title>
    <published>2013-01-11T13:10:03Z</published>
    <updated>2013-01-11T13:10:03Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(23315)" rel="nofollow" target="_blank"&gt;profts&lt;/a&gt;:&lt;/strong&gt;
Вот такую штуку выдает:
Откройте в древовидном виде, чтоб было понятно, что зачем вызывается.
Хотя примерно ясно, что COM ошибки идут из общения с древним компонентом чарта. WPF в таких случаях просто отрисовывает через интервалы времени. Не понятно кстати откуда и зачем там поиск вызывается. Зато понятно, что именно этот поиск всё и тормозит. Причём, чем больше свечек, тем он, конечно, медленнее.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23316/</id>
    <title type="text">Последняя версия - 4.1.7. У вас же в архиве 4.1.6 Судя по скриншоту - у вас общение с гуём отнимает ...</title>
    <published>2013-01-11T12:51:14Z</published>
    <updated>2013-01-11T12:51:14Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Последняя версия - 4.1.7. У вас же в архиве 4.1.6
Судя по скриншоту - у вас общение с гуём отнимает туеву хучу времени&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23315/</id>
    <title type="text">Попробуйте на последней версии с codeplex Стояла последняя версия. Сейчас для надежности заново скач...</title>
    <published>2013-01-11T12:44:31Z</published>
    <updated>2013-01-11T12:44:31Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;Попробуйте на последней версии с codeplex
Стояла последняя версия. Сейчас для надежности заново скачал - все без изменений.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Запустите под DotTrace и смотрите, что у вас слишком часто и/или слишком долго выполняется.&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.com/posts/m/23312/</id>
    <title type="text">profts: Если убираю : .... Но как это может влиять, если добавление на форму идет только после оконч...</title>
    <published>2013-01-11T12:13:57Z</published>
    <updated>2013-01-11T12:13:57Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(23310)" rel="nofollow" target="_blank"&gt;profts&lt;/a&gt;:&lt;/strong&gt;
Если убираю :
....
Но как это может влиять, если добавление на форму идет только после окончания 15мин свечек.  В тестерах на старых версиях у меня после каждого тика выводилась подобная инфа и никаких ошибок не возникало.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Не занимайтесь гаданием. Запустите под DotTrace и смотрите, что у вас слишком часто и/или слишком долго выполняется.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23311/</id>
    <title type="text">Попробуйте на последней версии с codeplex </title>
    <published>2013-01-11T12:04:22Z</published>
    <updated>2013-01-11T12:04:22Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Попробуйте на последней версии с codeplex&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23310/</id>
    <title type="text">Если убираю : MainWindow.Instance.GuiAsync(() =&amp;gt; { MainWindow.Instance.trades_time.Text = Security.L...</title>
    <published>2013-01-11T11:57:14Z</published>
    <updated>2013-01-11T11:57:14Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Если убираю :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
 MainWindow.Instance.GuiAsync(() =&amp;gt;
            {
                MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
                MainWindow.Instance.pos2_form.Text = Sostoyanie;
                MainWindow.Instance.position_form.Text = Position.ToString();
            });


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;, то торможение и зависание остается, но ошибка вроде не выскакивает.
Но как это может влиять, если добавление на форму идет только после окончания 15мин свечек.  В тестерах на старых версиях у меня после каждого тика выводилась подобная инфа и никаких ошибок не возникало.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23309/</id>
    <title type="text">Похоже это вы базу данных дрючите не по-детски. В базу данных у меня только сохраняются сделки, а их...</title>
    <published>2013-01-11T11:52:44Z</published>
    <updated>2013-01-11T11:52:44Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;Похоже это вы базу данных дрючите не по-детски.
В базу данных у меня только сохраняются сделки, а их всего штук 500 в год.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Сейчас попробовал SampleHystoryTesting, только изменил инструмент на Si и путь к истории по нему.  Ошибка не выскочила, но торможение очень сильное. Тест идет максимум месяц с торможениями, залипаниями секунд на 5-10 и потом окончательно виснет.&lt;/p&gt;
&lt;p&gt;Прикрепляю миним. проект, на котором воспроизводится ошибка. При старте теста график эквити обновляется рывками раз в 5-10 секунд, причем значение на графике значительно отстает от тех, которые отображаются слева в параметрах. т.е. в параметрах уже конец января, а эквити отображается дня за три максимум...  потом все окончательно виснет и выскакивает моя ошибка.   Это с учетом того, что я закомментировал сохранение сделок в базу.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23307/</id>
    <title type="text">profts: Нет, взял SampleHystoryTesting, пара стандартных индикаторов, простые условия для входов и в...</title>
    <published>2013-01-11T10:38:57Z</published>
    <updated>2013-01-11T10:38:57Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(23303)" rel="nofollow" target="_blank"&gt;profts&lt;/a&gt;:&lt;/strong&gt;
Нет, взял SampleHystoryTesting, пара стандартных индикаторов, простые условия для входов и выходов.&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.com/posts/m/23305/</id>
    <title type="text">Похоже это вы базу данных дрючите не по-детски. </title>
    <published>2013-01-11T10:35:11Z</published>
    <updated>2013-01-11T10:35:11Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</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.com/posts/m/23303/</id>
    <title type="text">Нет, взял SampleHystoryTesting, пара стандартных индикаторов, простые условия для входов и выходов. </title>
    <published>2013-01-11T09:53:14Z</published>
    <updated>2013-01-11T09:53:14Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Нет, взял SampleHystoryTesting, пара стандартных индикаторов, простые условия для входов и выходов.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23301/</id>
    <title type="text">С тестирование на тиках так и не разобрался из-за переполнения индикаторов... Пришлось тестировать н...</title>
    <published>2013-01-11T09:35:33Z</published>
    <updated>2013-01-11T09:51:24Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.com/users/6174/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;С тестирование на тиках так и не разобрался из-за переполнения индикаторов...  Пришлось тестировать на реале.&lt;/p&gt;
&lt;p&gt;Теперь к проблеме )))
Тестировал свои стратегии на старых версиях S#.  Все было отлично.  Решил полностью перейти на 4.1.6. Набросал простенькую стратегию на 15мин свечках. Шаблон взял полностью из SampleHistoryTesting. Свечки не рисую.
Начинается тест, первые два дня эквити рисуется достаточно быстро, потом начинает обновляться с интервалом секунд в 5 и в итоге форма вообще зависает, через минуту выскакивает это исключение:
&lt;img src="http://gyazo.com/33487bf9f0488b3202765aa81a7b97c0" alt="Ошибка" /&gt;&lt;/p&gt;
&lt;p&gt;Код:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;

 protected override void OnStarted()
        {
            //vcon.Open();
            CommissionRule commissionRule = new CommissionRule { Type = CommissionTypes.PerTradeVolume, Value = new Unit(3m) };
            _commissionManager.Rules.Add(commissionRule);
           
            Sostoyanie = &amp;quot;кэш&amp;quot;;
           
            takeprofit  = decimal.Parse(MainWindow.Instance.takeprofit_form.Text);
            proskalz = decimal.Parse(MainWindow.Instance.proskalz.Text);
            vol_kontr = decimal.Parse(MainWindow.Instance.vol_lotov.Text);
            vcon.Open();
           
            // Создание элемента графика представляющего свечки
            _candlesElem = new ChartCandleElement();
            MainWindow.Instance._area.Elements.Add(_candlesElem);

            //MainWindow.Instance._area_ind.Elements.Add(_longMaElem);
            //MainWindow.Instance._area_ind.Elements.Add(_shortMaElem);

         
            this
                .WhenNewMyTrades()
                .Do(ProcessNewTrades)
                .Apply(this);

            _series
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);
            
            base.OnStarted();
        }

             
        private void ProcessCandle(Candle candle)
        {

          //  if (candle.State == CandleStates.Finished) MainWindow.Instance.GuiAsync(() =&amp;gt; MainWindow.Instance.Chart.ProcessCandle(_candlesElem, candle));
            Indicator.Process(candle.ClosePrice);
            
            MainWindow.Instance.GuiAsync(() =&amp;gt;
            {
                MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
                MainWindow.Instance.pos2_form.Text = Sostoyanie;
                MainWindow.Instance.position_form.Text = Position.ToString();
            });

         
            if (!START)
            {
                if (Indicator.Container.Count &amp;gt; 2)
                {
                    START = true;
                    Security
               .WhenNewTrades()
               .Do(ProcessNewTrade)
               .Apply(this);

                }
            }

        }

        private void Comission_raschet()
        {
            comission = 0;
            foreach (MyTrade trade in MyTrades)
            {
                comission = comission + _commissionManager.ProcessMyTrade(trade);
            }
            //MainWindow.Instance.GuiAsync(() =&amp;gt;
            //{
            //    MainWindow.Instance.comission_form.Text = comission.ToString();
            //});
        }
       
        private void ProcessNewTrade()
        {
            if (Security.LastTrade == null)
            { goto propusk2; }

            if (Security.LastTrade.Time.Hour == 19 &amp;amp;&amp;amp; Security.LastTrade.Time.Minute == 0 &amp;amp;&amp;amp; Security.LastTrade.Time.Second &amp;lt; 10)
            { goto propusk2; }

            switch (Sostoyanie)
            {
                case &amp;quot;кэш&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;Long&amp;quot;;
                            Buy_Order(vol_kontr);
                        }
                        else if (...)
                        {
                            Sostoyanie = &amp;quot;Short&amp;quot;;
                            Sell_Order(vol_kontr);
                        }
                    }
                    break;
                case &amp;quot;Long&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;кэш&amp;quot;;
                            Sell_Order(vol_kontr);
                        }
                    }
                    break;
                case &amp;quot;Short&amp;quot;:
                    {
                        if (...)
                        {
                            Sostoyanie = &amp;quot;кэш&amp;quot;;
                            Buy_Order(vol_kontr);
                        }
                    }
                    break;
            }

        propusk2:
    
            //MainWindow.Instance.GuiAsync(() =&amp;gt;
            //{

            //    MainWindow.Instance.trades_time.Text = Security.LastTrade.Time.ToString();
            //    //MainWindow.Instance.now_time.Text = DateTime.Now.ToString();
            //    MainWindow.Instance.pos2_form.Text = pos;
            //    MainWindow.Instance.position_form.Text = Position.ToString();
            //    MainWindow.Instance.komiss_form.Text = comission.ToString();
               
            //});

        }

        private void Buy_Order(decimal volume)
        {

            EntryPrice = Security.LastTrade.Price; ;

            this.AddInfoLog(&amp;quot;Сигнал на покупку&amp;quot;);
            nomersdelki++;
            order_open_long = this.CreateOrder(OrderDirections.Buy, Security.LastTrade.Price + proskalz, volume);
            order_open_long.Security = Security;
            this.RegisterOrder(order_open_long);
            order_open_long
                                .WhenMatched()
                                .Do(pos_change_long)
                                .Apply(this);

            this.AddInfoLog(PnLManager.PnL.ToString());
            //string vsql = string.Format(&amp;quot;insert into Rez2 (nomer_sdelki, data_vxoda,vremya_vxoda, cena_vxoda, High, Low,stop_price) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6})&amp;quot;,
            //          (nomersdelki), (Security.LastTrade.Time.ToString(&amp;quot;dd.MM&amp;quot;)), (Security.LastTrade.Time.ToString(&amp;quot;HH.mmss&amp;quot;)), (order_open_long.Price.ToString()), (candle_high),(candle_low),(stop_price));


            //OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            //vcom.ExecuteNonQuery();
        }


        private void Sell_Order(decimal volume)
        {
            EntryPrice = Security.LastTrade.Price;
            this.AddInfoLog(&amp;quot;Сигнал на продажу&amp;quot;);
            nomersdelki++;
            order_open_short = this.CreateOrder(OrderDirections.Sell, Security.LastTrade.Price - proskalz, volume);
            order_open_short.Security = Security;

            this.RegisterOrder(order_open_short);
            order_open_short
                                .WhenMatched()
                                .Do(pos_change_short)
                                .Apply(this);
            //string vsql = string.Format(&amp;quot;insert into Rez2 (nomer_sdelki, data_vxoda,vremya_vxoda, cena_vxoda, High, Low,stop_price) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6})&amp;quot;,
            //          (nomersdelki), (Security.LastTrade.Time.ToString(&amp;quot;dd.MM&amp;quot;)), (Security.LastTrade.Time.ToString(&amp;quot;HH.mmss&amp;quot;)), (order_open_long.Price.ToString()), (candle_high), (candle_low), (stop_price));
            //OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            //vcom.ExecuteNonQuery();
        }



&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/23302/</id>
    <title type="text">Весь проект прикрепите. У вас где-то ком используется? </title>
    <published>2013-01-11T09:39:05Z</published>
    <updated>2013-01-11T09:39:05Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Весь проект прикрепите. У вас где-то ком используется?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>