<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Синхронизация завершения main и OnStop]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Синхронизация завершения main и OnStop форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 17 Apr 2026 08:14:26 +0300</pubDate>
		<item>
			<title>Синхронизация завершения main и OnStop</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34149/topic3979/">Синхронизация завершения main и OnStop</a></b> <i>требуется ли</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_W4Py4D96" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Окно Версии компонентов, находятся в меню Система - О программе - Компоненты<br />=============<br />Еще раз спасибо, нашел блудное окно ))<br />QLua.dll загружен хотя в терминале в котором я посмотрел точно нет луа скриптов и нет индикаторов. Насколько я понимаю этот модуль следовательно нужен чему-то еще в терминале и событие связанное с его выгрузкой без закрытия терминала и не наступит, так как-то? <br />
			<i>01.10.2018 15:59:45, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34149/topic3979/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34149/topic3979/</guid>
			<pubDate>Mon, 01 Oct 2018 15:59:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация завершения main и OnStop</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34148/topic3979/">Синхронизация завершения main и OnStop</a></b> <i>требуется ли</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_UENVe4aC" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a>, благодарю за разьяснения!<br /><a class="blog-p-user-name" id="bp_qFLas7zD" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><br /><br />====quote====<br />А как Вам нужно?Если хотите чтобы OnStop был последний, верните из него таймер<br />=============<br />Мне оно не нужно. Хотел убедиться что терминал ничего себе определенного в этом месте не подразумевает. Если терминалу все равно, просто &quot;беру это себе на карандаш&quot; и продолжаю заниматься своими делами )) <br />
			<i>01.10.2018 15:54:47, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34148/topic3979/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34148/topic3979/</guid>
			<pubDate>Mon, 01 Oct 2018 15:54:47 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация завершения main и OnStop</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34126/topic3979/">Синхронизация завершения main и OnStop</a></b> <i>требуется ли</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_a8Bd8OGh" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a> написал:<br />У меня оно наступает только при закрытии терминала, при остановке сценария кнопкой не наступает. <br />=============<br />Все правильно, оно и не должно так срабатывать, Вы же сами привели цитату из документации.<br />Окно Версии компонентов, находятся в меню Система - О программе - Компоненты<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_OsnN6nFJ" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a> написал:<br />Дополнительный вопрос по OnClose. У меня по результатам прогона нескольких сценариев OnClose если случается то &nbsp;всегда до &nbsp;OnStop. Следует ли считать такую последовательность гарантированой? Исходя из общей логики того что они в одном потоке вроде должно быть именно так.<br />=============<br />Терминал можно закрыть по разному, например через диспетчер задач, или просто выключить компьютер. Проверьте этот момент.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_KAxywJuk" href="/user/12453/" bx-tooltip-user-id="12453">BlackBoar</a> написал:<br />Вопрос, следует ли мне всегда размещать IsRun = false в конце OnStop или можно не забивать себе такими нюансами голову?<br /><br />=============<br />А как Вам нужно?<br />Если хотите чтобы OnStop был последний, верните из него таймер<br /><br />
====code====
<pre>function OnStop(flag) 
return 10000
end </pre>
============= <br />
			<i>01.10.2018 06:05:07, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34126/topic3979/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34126/topic3979/</guid>
			<pubDate>Mon, 01 Oct 2018 06:05:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация завершения main и OnStop</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34124/topic3979/">Синхронизация завершения main и OnStop</a></b> <i>требуется ли</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Дополнительный вопрос по OnClose. У меня по результатам прогона нескольких сценариев OnClose если случается то <B>всегда до</B> OnStop. Следует ли считать такую последовательность гарантированой? Исходя из общей логики того что они в одном потоке вроде должно быть именно так. <br />
			<i>30.09.2018 17:13:30, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34124/topic3979/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34124/topic3979/</guid>
			<pubDate>Sun, 30 Sep 2018 17:13:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация завершения main и OnStop</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34120/topic3979/">Синхронизация завершения main и OnStop</a></b> <i>требуется ли</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			И еще вопрос вдогонку. Есть событие OnClose, которое согласно описанию наступает <br /><br /><br />====quote====<br />Функция вызывается перед закрытием терминала QUIK и при выгрузке файла qlua.dll<br />Под выгрузкой файла qlua.dll подразумевается отключение плагина QLua в окне &nbsp;«Версии компонентов и плагинов» (см. п. 1.9. Раздела 1 Руководства пользователя &nbsp;QUIK).<br />=============<br />У меня оно наступает только при закрытии терминала, при остановке сценария кнопкой не наступает. Окна которое бы называлось &nbsp;«Версии компонентов и плагинов» я в квик 7.19.0.51 попросту не вижу, а Раздел 1 руководства пользователя квик это &quot;подготовка к работе&quot; и там нет никакой нумерации пунктов.<br />Скрипт которым тестировал (самый простой вариант):
====code====
<pre>file = io.open("D:&#92;&#92;EventTest.log", "a+t")
IsRun = true

function WriteLog(s, ...)
&nbsp;&nbsp;&nbsp;&nbsp;if file ~=nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file:write(tostring(os.date()) .. " " .. string.format(s, unpack(arg)) .. "&#92;n")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file:flush()
&nbsp;&nbsp;&nbsp;&nbsp;end
end

function OnClose()
&nbsp;&nbsp;&nbsp;&nbsp;WriteLog("Entered OnClose")
end


function OnInit()
&nbsp;&nbsp;&nbsp;&nbsp;WriteLog("Entered OnInit")
end

function OnStop()
&nbsp;&nbsp;&nbsp;&nbsp;WriteLog("Entered OnStop")
&nbsp;&nbsp;&nbsp;&nbsp;IsRun = false
end


function main()
&nbsp;&nbsp;&nbsp;&nbsp;WriteLog("Entered Main")

&nbsp;&nbsp;&nbsp;&nbsp;while IsRun do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(500)
&nbsp;&nbsp;&nbsp;&nbsp;end;

&nbsp;&nbsp;&nbsp;&nbsp;WriteLog("Leaving Main")
end</pre>
=============
Фрагменты лога, если закрыть квик:
====code====
<pre>09/30/18 07:03:50 Entered OnInit
09/30/18 07:03:50 Entered Main
09/30/18 07:03:53 Entered OnClose
09/30/18 07:03:53 Entered OnStop
09/30/18 07:03:54 Leaving Main</pre>
=============
Если остановить скрипт кнопкой:<br />
====code====
<pre>09/30/18 07:04:00 Entered OnInit
09/30/18 07:04:00 Entered Main
09/30/18 07:04:14 Entered OnStop
09/30/18 07:04:14 Leaving Main</pre>
=============
Для чистоты эксперимента все остальные скрипты были из квика удалены.<br /><br />Итого вопрос, следует ли из этого что OnClose на самом то деле случается только при закрытии терминала, или я столкнулся с неизвестным ранее глюком, или я что-то не так понимаю в описании? <br />
			<i>30.09.2018 07:25:21, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34120/topic3979/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34120/topic3979/</guid>
			<pubDate>Sun, 30 Sep 2018 07:25:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация завершения main и OnStop</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message34116/topic3979/">Синхронизация завершения main и OnStop</a></b> <i>требуется ли</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Возник вопрос. Вполне вероятно он достаточно нубский, но однозначный ответ я не нагуглил и хочу для себя прояснить.<br />Допустим OnStop в моем сценарии выглядит как-то так:
====code====
<pre>function OnStop(flag) 
&nbsp;&nbsp;IsRun = false
&nbsp;&nbsp;-- далее следуют какие то относительно продолжительные действия
&nbsp;&nbsp;-- сохранение нажитого непосильным трудом по файлам например
&nbsp;&nbsp;-- имитация таковых:
&nbsp;&nbsp;sleep(50) 
end </pre>
=============
В результате main может прочитать что IsRun = false и завершиться до завершения OnStop.<br />Вопрос, следует ли мне всегда размещать IsRun = false в конце OnStop или можно не забивать себе такими нюансами голову? <br />
			<i>29.09.2018 21:50:29, BlackBoar.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message34116/topic3979/</link>
			<guid>http://forum.quik.ru/messages/forum10/message34116/topic3979/</guid>
			<pubDate>Sat, 29 Sep 2018 21:50:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
