﻿<?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/2689/obnovlenie-stakana-vo-vremya-obrabotki-predydushshego-obnovleniya---kak-otrabotaet/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T00:14:15Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=2689" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/19461/</id>
    <title type="text">А откуда вы подписываетесь на событие trader.QuotesChanged? Для простоты (пока экспериментирую) всё ...</title>
    <published>2012-05-30T14:38:54Z</published>
    <updated>2012-05-30T14:38:54Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Algonavt &lt;a href="https://stocksharp.ru/posts/m/19455/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Serg &lt;a href="https://stocksharp.ru/posts/m/19377/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А откуда вы подписываетесь на событие trader.QuotesChanged?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Для простоты (пока экспериментирую) всё действие происходит в main - точно так же, как в примере из стандартной поставки.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Тоесть это не внутри стратегии. Если так то параллельно работать не будет.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19455/</id>
    <title type="text">А откуда вы подписываетесь на событие trader.QuotesChanged? Для простоты (пока экспериментирую) всё ...</title>
    <published>2012-05-30T11:10:54Z</published>
    <updated>2012-05-30T11:10:54Z</updated>
    <author>
      <name>Algonavt</name>
      <uri>https://stocksharp.ru/users/639/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Serg &lt;a href="https://stocksharp.ru/posts/m/19377/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А откуда вы подписываетесь на событие trader.QuotesChanged?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Для простоты (пока экспериментирую) всё действие происходит в main - точно так же, как в примере из стандартной поставки.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19377/</id>
    <title type="text">А откуда вы подписываетесь на событие trader.QuotesChanged?</title>
    <published>2012-05-28T07:33:03Z</published>
    <updated>2012-05-28T07:33:03Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">А откуда вы подписываетесь на событие trader.QuotesChanged?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19284/</id>
    <title type="text">Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на событи...</title>
    <published>2012-05-23T18:48:42Z</published>
    <updated>2012-05-23T19:52:03Z</updated>
    <author>
      <name>Algonavt</name>
      <uri>https://stocksharp.ru/users/639/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;ra81 &lt;a href="https://stocksharp.ru/posts/m/19068/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Serg &lt;a href="https://stocksharp.ru/posts/m/19066/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;ra81 &lt;a href="https://stocksharp.ru/posts/m/19062/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на события обновления стакана то код выполняемый по событию будет тоже в том же потоке что и стакан. Отсюда если вы этот поток задержите, то и приход нового стакана задержится. А код с interlocked по факту задерживает поток стакана. Отсюда сама конструкция не думаю что функциональна вовсе. &lt;br /&gt;&lt;br /&gt;Опять же нужно учесть разные устройства коннекторов, но я уверен что каждый новый стакан не приходит в отдельном новом потоке :). Отсюда таки конструкция бесполезна.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Спасибо за ваше мнение заставили меня задуматься) &lt;br /&gt;А как можно всю эту теорию проверить? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Проверить легко. В теле обработки стакана поставить Thread.Sleep(100000) и на входе в функцию поставить Debug.WriteLine(&amp;quot;Получил стакан.&amp;quot;) перед проверкой if (inUse == 0)&lt;br /&gt;&lt;br /&gt;Если будете видеть постоянно новые записи значит стакан приходит без задежек. Если будет пауза значит стакан блочится в теле вашей функции.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Сделал следующий код:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

trader.QuotesChanged += depths =&amp;gt;
			{
				if (!stakanStarted)
				{
					if (_security != null)
					{
						_depth = depths.FirstOrDefault(d =&amp;gt; d.Security == _security);
						
						if (_depth != null)
						{
							Console.WriteLine(&amp;quot;Стакан для {0} появился.&amp;quot;, _security.Code);
							stakanStarted = true;
							if (_portfolio != null &amp;amp;&amp;amp; _security != null)
								waitHandle.Set();
						}
					}
				}
				// Обработка стаканов после запуска экспорта
				else
				{
					int inUse = Interlocked.CompareExchange(ref _inUse, 1, 0);
					Console.WriteLine(&amp;quot;Стакан обновился!&amp;quot;);
					if (inUse == 0)
					{
						try
						{
							Thread.Sleep(100000);
							var _bid = _depth.Security.BestBid.Price;
							var _ask = _depth.Security.BestAsk.Price;
							
							if (_bid != lastBid)
							{
								lastBid = _bid;
								updateRequired = true;
							}
							
							if (_ask != lastAsk)
							{
								lastAsk = _ask;
								updateRequired = true;
							}
							
							if (updateRequired)
							{
								updateRequired = false;
								currentTime = DateTime.Now.ToString(&amp;quot;HH:mm:ss.fff&amp;quot;);
								Console.WriteLine(&amp;quot;Time: {0} : Best Bid = {1}, Best Ask = {2}&amp;quot;, currentTime, lastBid, lastAsk);
							}
						}
						catch (Exception onprE)
						{
							Console.WriteLine(&amp;quot;Exception: &amp;quot; + onprE.ToString());
							// AddLog(StrategyErrorStates.Error, onprE.Message, this);
						}
						finally
						{
							Interlocked.Exchange(ref _inUse, 0);
						}
					}
				}
			};&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Результат: сообщения &amp;quot;Стакан обновился&amp;quot; и форматированный вывод лучшей пары появляются на консоли раз в сто секунд.&lt;br /&gt;&lt;br /&gt;В квике вижу, что спред прыгает, а в робота ничего не поступает. Вывод: блочится, выходит, экспорт стакана...</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19074/</id>
    <title type="text">Запущен экспорт стакана ... Я использую вот такую кострукцию, ктото давно посоветовал спасибо ему за...</title>
    <published>2012-05-16T15:03:37Z</published>
    <updated>2012-05-16T15:03:37Z</updated>
    <author>
      <name>Maxim</name>
      <uri>https://stocksharp.ru/users/6182/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Serg &lt;a href="https://stocksharp.ru/posts/m/19050/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Algonavt &lt;a href="https://stocksharp.ru/posts/m/19048/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Запущен экспорт стакана ...&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Я использую вот такую кострукцию, ктото давно посоветовал спасибо ему за это:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
int inUse = Interlocked.CompareExchange(ref _inUse, 1, 0);
if (inUse == 0)
{
   try
   {
      // тут наша обработка
   }
   catch (Exception onprE)
   {
      AddLog(StrategyErrorStates.Error, onprE.Message, this);
   }
   finally
   {
      Interlocked.Exchange(ref _inUse, 0);
   }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Я обычно такой конструкцией пользуюсь.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

if (Monitor.TryEnter(lockObject) == true)
{
	try
	{
		// Код, который необходимо выполнить только в одном потоке одновременно
	}
	finally
	{
		Monitor.Exit(lockObject);
	}
}
else
{
	 // Если  у нас не получилось блокировать       
}   

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19073/</id>
    <title type="text">ок выложу</title>
    <published>2012-05-16T12:32:02Z</published>
    <updated>2012-05-16T12:32:02Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">ок выложу</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19071/</id>
    <title type="text">Если метод который вы мне предложили верен, то все ок. Блокировки нет. Стакан обновляется в отдельно...</title>
    <published>2012-05-16T12:12:19Z</published>
    <updated>2012-05-16T12:12:19Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Serg &lt;a href="https://stocksharp.ru/posts/m/19069/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Если метод который вы мне предложили верен, то все ок. Блокировки нет. Стакан обновляется в отдельном потоке)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Ну а реализацию приложите метода с проверкой.... А то странно. Возможно это квиковская особенность.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19069/</id>
    <title type="text">Если метод который вы мне предложили верен, то все ок. Блокировки нет. Стакан обновляется в отдельно...</title>
    <published>2012-05-16T07:33:49Z</published>
    <updated>2012-05-16T07:33:49Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Если метод который вы мне предложили верен, то все ок. Блокировки нет. Стакан обновляется в отдельном потоке)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19068/</id>
    <title type="text">Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на событи...</title>
    <published>2012-05-16T07:00:21Z</published>
    <updated>2012-05-16T07:00:21Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Serg &lt;a href="https://stocksharp.ru/posts/m/19066/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;ra81 &lt;a href="https://stocksharp.ru/posts/m/19062/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на события обновления стакана то код выполняемый по событию будет тоже в том же потоке что и стакан. Отсюда если вы этот поток задержите, то и приход нового стакана задержится. А код с interlocked по факту задерживает поток стакана. Отсюда сама конструкция не думаю что функциональна вовсе. &lt;br /&gt;&lt;br /&gt;Опять же нужно учесть разные устройства коннекторов, но я уверен что каждый новый стакан не приходит в отдельном новом потоке :). Отсюда таки конструкция бесполезна.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Спасибо за ваше мнение заставили меня задуматься) &lt;br /&gt;А как можно всю эту теорию проверить? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Проверить легко. В теле обработки стакана поставить Thread.Sleep(100000) и на входе в функцию поставить Debug.WriteLine(&amp;quot;Получил стакан.&amp;quot;) перед проверкой if (inUse == 0)&lt;br /&gt;&lt;br /&gt;Если будете видеть постоянно новые записи значит стакан приходит без задежек. Если будет пауза значит стакан блочится в теле вашей функции.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19066/</id>
    <title type="text">Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на событи...</title>
    <published>2012-05-16T06:47:40Z</published>
    <updated>2012-05-16T06:47:40Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;ra81 &lt;a href="https://stocksharp.ru/posts/m/19062/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на события обновления стакана то код выполняемый по событию будет тоже в том же потоке что и стакан. Отсюда если вы этот поток задержите, то и приход нового стакана задержится. А код с interlocked по факту задерживает поток стакана. Отсюда сама конструкция не думаю что функциональна вовсе. &lt;br /&gt;&lt;br /&gt;Опять же нужно учесть разные устройства коннекторов, но я уверен что каждый новый стакан не приходит в отдельном новом потоке :). Отсюда таки конструкция бесполезна.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Спасибо за ваше мнение заставили меня задуматься) &lt;br /&gt;А как можно всю эту теорию проверить? </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19062/</id>
    <title type="text">Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на событи...</title>
    <published>2012-05-16T01:34:02Z</published>
    <updated>2012-05-16T01:34:02Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.ru/users/16581/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Стакан работает не в потоке main вашей программы. Отсюда если ваша программа подвязывается на события обновления стакана то код выполняемый по событию будет тоже в том же потоке что и стакан. Отсюда если вы этот поток задержите, то и приход нового стакана задержится. А код с interlocked по факту задерживает поток стакана. Отсюда сама конструкция не думаю что функциональна вовсе. &lt;br /&gt;&lt;br /&gt;Опять же нужно учесть разные устройства коннекторов, но я уверен что каждый новый стакан не приходит в отдельном новом потоке :). Отсюда таки конструкция бесполезна.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19056/</id>
    <title type="text">Верно ли я понимаю, что пока выполняется код в части &amp;quot;// тут наша обработка&amp;quot;, все вызовы того же сам...</title>
    <published>2012-05-15T19:14:41Z</published>
    <updated>2012-05-15T19:14:41Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Algonavt &lt;a href="https://stocksharp.ru/posts/m/19055/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Верно ли я понимаю, что пока выполняется код в части &amp;quot;// тут наша обработка&amp;quot;, все вызовы того же самого обработчика становятся в очередь?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Нет они все проходят мимо так как _inUse у нас теперь равен 1 и (inUse == 0) возвращает false&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Algonavt &lt;a href="https://stocksharp.ru/posts/m/19055/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;И ещё вопрос. &amp;quot;Замораживается&amp;quot; ли в случае использования такой конструкции содержимое стакана на время выполнения секции &amp;quot; // тут наша обработка&amp;quot;? Я имею в виду, что если в этой секции будет несколько обращений к содержимому стакана (к примеру, получение массива Bid -&amp;gt; выполнение расчетов с массивом Bid -&amp;gt; получение массива Ask -&amp;gt; выполнение расчетов с массивом Ask), есть ли риск того, что между шагами &amp;quot;получение массива Bid&amp;quot; и &amp;quot;получение массива Ask&amp;quot; содержимое стакана изменится?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Стакан не замораживается. Насколько я знаю он обновляется в отдельном потоке. И чаще всего вы работаете с его копией делая&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var md = Trader.GetMarketDepth(seccode);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; то есть работаете уже с md. Но тут уже только мои догадки и более точно сможет ответить Михаил или Александр.&lt;br /&gt;Если дважды вызвать приведенный выше код в &amp;quot;// тут наша обработка&amp;quot; то думаю вероятность есть что первый слепок стакана не будет соответствовать второму.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19055/</id>
    <title type="text">Ок, спасибо. Хорошая конструкция. Насколько я понимаю из MSDN-овской матчасти о многопоточности, так...</title>
    <published>2012-05-15T18:26:00Z</published>
    <updated>2012-05-15T18:28:47Z</updated>
    <author>
      <name>Algonavt</name>
      <uri>https://stocksharp.ru/users/639/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Ок, спасибо. Хорошая конструкция. Насколько я понимаю из MSDN-овской матчасти о многопоточности, такая конструкция (оформление &amp;quot;чувствительной&amp;quot; части кода в Interlocked) позволяет застраховаться от того, что новый вызов обработчика случится до завершения предыдущего вызова и что часть кода, выполняющая обработку, будет прервана где-то в середине. Верно ли я понимаю, что пока выполняется код в части &amp;quot;// тут наша обработка&amp;quot;, все вызовы того же самого обработчика становятся в очередь?&lt;br /&gt;&lt;br /&gt;И ещё вопрос. &amp;quot;Замораживается&amp;quot; ли в случае использования такой конструкции содержимое стакана на время выполнения секции &amp;quot; // тут наша обработка&amp;quot;? Я имею в виду, что если в этой секции будет несколько обращений к содержимому стакана (к примеру, получение массива Bid -&amp;gt; выполнение расчетов с массивом Bid -&amp;gt; получение массива Ask -&amp;gt; выполнение расчетов с массивом Ask), есть ли риск того, что между шагами &amp;quot;получение массива Bid&amp;quot; и &amp;quot;получение массива Ask&amp;quot; содержимое стакана изменится?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19050/</id>
    <title type="text">Запущен экспорт стакана ... Я использую вот такую кострукцию, ктото давно посоветовал спасибо ему за...</title>
    <published>2012-05-15T12:00:16Z</published>
    <updated>2012-05-15T12:00:16Z</updated>
    <author>
      <name>Serg</name>
      <uri>https://stocksharp.ru/users/484/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Algonavt &lt;a href="https://stocksharp.ru/posts/m/19048/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Запущен экспорт стакана ...&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Я использую вот такую кострукцию, ктото давно посоветовал спасибо ему за это:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
int inUse = Interlocked.CompareExchange(ref _inUse, 1, 0);
if (inUse == 0)
{
   try
   {
      // тут наша обработка
   }
   catch (Exception onprE)
   {
      AddLog(StrategyErrorStates.Error, onprE.Message, this);
   }
   finally
   {
      Interlocked.Exchange(ref _inUse, 0);
   }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/19048/</id>
    <title type="text">Запущен экспорт стакана по DDE, настроен обработчик событий обновления стакана. Предположим, что акт...</title>
    <published>2012-05-15T09:58:20Z</published>
    <updated>2012-05-15T09:58:20Z</updated>
    <author>
      <name>Algonavt</name>
      <uri>https://stocksharp.ru/users/639/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Запущен экспорт стакана по DDE, настроен обработчик событий обновления стакана. Предположим, что активность торгов очень высокая, и очередное событие обновления стакана возникает ещё до того, как завершилась обработка предыдущего события.&lt;br /&gt;&lt;br /&gt;Вопрос: что будет происходить в этом случае? Будет накапливаться очередь событий? Новые события будут игнорироваться до тех пор, пока не завершится обработка предыдущего события?&lt;br /&gt;&lt;br /&gt;Пока только осваиваю, так что не пинайте, если очевтдные вещи спрашиваю. :)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>