<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: OnMainInit()]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме OnMainInit() форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Wed, 08 Apr 2026 22:34:10 +0300</pubDate>
		<item>
			<title>OnMainInit()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum8/message39248/topic4678/">OnMainInit()</a></b> <i>Новый луа-колбек</i> в форуме <a href="http://forum.quik.ru/forum8/">Пожелания по развитию QUIK</a>. <br />
			Здравствуйте, <a class="blog-p-user-name" id="bp_mTU8vmmc" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a>!<br />Дополнили Ваши замечания к пожеланию.<br />Благодарим за дополнительную информацию! <br />
			<i>09.08.2019 07:59:44, Alexander Kopyatkevich.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum8/message39248/topic4678/</link>
			<guid>http://forum.quik.ru/messages/forum8/message39248/topic4678/</guid>
			<pubDate>Fri, 09 Aug 2019 07:59:44 +0300</pubDate>
			<category>Пожелания по развитию QUIK</category>
		</item>
		<item>
			<title>OnMainInit()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum8/message39240/topic4678/">OnMainInit()</a></b> <i>Новый луа-колбек</i> в форуме <a href="http://forum.quik.ru/forum8/">Пожелания по развитию QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_yqBeyq6s" href="/user/12786/" bx-tooltip-user-id="12786">Alexander Kopyatkevich</a> написал:<br />Здравствуйте, <noindex><a href="/user/1222/" target="_blank" rel="nofollow">Anton</a></noindex>.<br />На данный момент проблема с отработкой функции OnInit() все еще разбирается.<br />Ваше предложение зарегистрировали как пожелание на создание функции OnMainInit(). Мы постараемся рассмотреть его и сообщить Вам результаты анализа. &nbsp;Впоследствии, по результатам анализа, будет приниматься решение о &nbsp;реализации пожелания в будущих версиях ПО.<br />=============<br />Благодарю за регистрацию пожелания. Пара замечаний вдогонку.<br /><br />1. Подобный колбек призван не столько победить ошибку с OnInit(), сколько сильно облегчить программирование встраиваемой длл, поскольку, будучи уже в потоке main в то время как квик нас ждет, мы можем сделать много чего полезного, что нельзя сделать из основного потока квика и в настоящее время откладывается до начала main(), где зачастую уже &quot;неинтересно&quot; это все делать, т.к. квик отпущен и поезд ушел. Как писал выше, можно сделать свой мейн с преферансом и прочим, но это плюс один поток.<br /><br />2. По поводу OnInit() попался мне на глаза <noindex><a href="https://forum.quik.ru/messages/forum10/message1491/topic212/#message1491" target="_blank" rel="nofollow">кусочек кода</a></noindex> и, думается, примерно как-то так в квике и сделано. Тогда возникает подозрение, что после поимки ошибки в OnInit ссылка на луа-стек для main не выпускается и отсюда не происходит сборка мусора. Так сказать, в меру сил пытаюсь помочь в поисках (а-ля Чумак, через телевизор). <br />
			<i>08.08.2019 17:49:12, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum8/message39240/topic4678/</link>
			<guid>http://forum.quik.ru/messages/forum8/message39240/topic4678/</guid>
			<pubDate>Thu, 08 Aug 2019 17:49:12 +0300</pubDate>
			<category>Пожелания по развитию QUIK</category>
		</item>
		<item>
			<title>OnMainInit()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum8/message39223/topic4678/">OnMainInit()</a></b> <i>Новый луа-колбек</i> в форуме <a href="http://forum.quik.ru/forum8/">Пожелания по развитию QUIK</a>. <br />
			Здравствуйте, <a class="blog-p-user-name" id="bp_yXpsck9m" href="/user/1222/" bx-tooltip-user-id="1222">Anton</a>.<br />На данный момент проблема с отработкой функции OnInit() все еще разбирается.<br />Ваше предложение зарегистрировали как пожелание на создание функции OnMainInit(). Мы постараемся рассмотреть его и сообщить Вам результаты анализа. &nbsp;Впоследствии, по результатам анализа, будет приниматься решение о &nbsp;реализации пожелания в будущих версиях ПО. <br />
			<i>08.08.2019 07:22:43, Alexander Kopyatkevich.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum8/message39223/topic4678/</link>
			<guid>http://forum.quik.ru/messages/forum8/message39223/topic4678/</guid>
			<pubDate>Thu, 08 Aug 2019 07:22:43 +0300</pubDate>
			<category>Пожелания по развитию QUIK</category>
		</item>
		<item>
			<title>OnMainInit()</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum8/message39221/topic4678/">OnMainInit()</a></b> <i>Новый луа-колбек</i> в форуме <a href="http://forum.quik.ru/forum8/">Пожелания по развитию QUIK</a>. <br />
			В нынешнем виде пара OnInit() / main() не позволяет надежно инициализировать скрипт, поскольку в момент выполнения OnInit() поток main еще не существует (или существует, но недоступен из скрипта), а в момент начала выполнения main() после выхода из OnInit() уже произоошли (или могли произойти) какие-то события, которые без принятия специальных мер будут пропущены. Очень удобно было бы иметь дополнительный колбек, назовем его условно OnMainInit(), выполняемый после создания потока main в контексте этого потока, но при условии, что основной поток квика ждет завершения этого колбека, то есть ни один другой колбек между OnInit и OnMainInit гарантированно не был дернут.<br /><br />Очень грубо, только чтобы идею донести, как это могло бы выглядеть в коде квика<br /><br />
====code====
<pre>void QuikInitializeLuaScript(...)
{
&nbsp;&nbsp;&nbsp;// ...
&nbsp;&nbsp;&nbsp;HANDLE hevent = CreateEvent(...);
&nbsp;&nbsp;&nbsp;HANDLE hmainthread = _beginthreadex( ... , scriptmainproc, hevent, CREATE_SUSPENDED);
&nbsp;&nbsp;&nbsp;script-&#62;OnInit();
&nbsp;&nbsp;&nbsp;ResumeThread(hmainthread);
&nbsp;&nbsp;&nbsp;WaitForSingleObject(hevent);
&nbsp;&nbsp;&nbsp;// (по-хорошему тут надо на двух объектах ждать, на событии и самом потоке, кто первый выстрелит)
&nbsp;&nbsp;&nbsp;// и только теперь продолжаем основной поток квика
}

unsigned __stdcall scriptmainproc(void * pvoid)
{
&nbsp;&nbsp;&nbsp;HANDLE hevent = reinterpret_cast&#60;HANDLE&#62;(pvoid);
&nbsp;&nbsp;&nbsp;myscript-&#62;OnMainInit();
&nbsp;&nbsp;&nbsp;SetEvent(hevent);
&nbsp;&nbsp;&nbsp;myscript-&#62;main();
&nbsp;&nbsp;&nbsp;return 0;
}
</pre>
=============
<p>Собственно, так и приходится делать, просто жаль создавать еще один поток, а main использовать только для ожидания завершения этого лишнего потока, когда то же самое могло бы быть из коробки.<br /></p> <br />
			<i>08.08.2019 05:16:24, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum8/message39221/topic4678/</link>
			<guid>http://forum.quik.ru/messages/forum8/message39221/topic4678/</guid>
			<pubDate>Thu, 08 Aug 2019 05:16:24 +0300</pubDate>
			<category>Пожелания по развитию QUIK</category>
		</item>
	</channel>
</rss>
