<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: перестает работать таймер]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14282&amp;type=atom" />
	<updated>2018-10-27T22:37:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=14282</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: перестает работать таймер]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=129525#p129525" />
			<content type="html"><![CDATA[<p>Спасибо за объяснения.</p>]]></content>
			<author>
				<name><![CDATA[Karagiozis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38736</uri>
			</author>
			<updated>2018-10-27T22:37:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=129525#p129525</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: перестает работать таймер]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=129524#p129524" />
			<content type="html"><![CDATA[<p><strong>MandarinKa02</strong>, это не выход.<br /><strong>Karagiozis</strong>, следующий таймер не работает потому что не завершается метка предыдущего. Goto переводит в бесконечный цикл и Return не достигается.<br />То что вы хотите реализовать красиво в одном процессе не выйдет потому что язык однопоточный.<br />Можете попробовать перед Goto отключить таймер и установить заново, однако каждое срабатывание будет увеличивать стек вызовов, что ограничавает их кол-во.<br />Вообще старайтесь не пользовать GoTo. И кстати, зачем транслит? Пишите вернулся().</p>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2018-10-27T21:37:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=129524#p129524</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: перестает работать таймер]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=129522#p129522" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#Persistent

SetTimer, stuck, 200

Goto, start

return

;эмулируем ситуацию 
F2::
stuck := 1
return

start:
	Loop
	{
		take()
		sleep 500
		otnes()
		sleep 500
		vernylsya()
		sleep 500
	}
return

stuck:
ToolTip, %A_TickCount% ,100,150, 2
if (stuck == 1)
{
	ToolTip, Что-то пошло не так: %A_TickCount% ,100,150, 2
	vernylsya()
	stuck := 0
}
return

take()
{
	ToolTip, Взял,100,100, 1
}

otnes()
{
	ToolTip, отнес делаль,100,100, 1
}

vernylsya()
{
	ToolTip, вернулся обратно,100,100, 1
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[MandarinKa02]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34409</uri>
			</author>
			<updated>2018-10-27T20:59:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=129522#p129522</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: перестает работать таймер]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=129520#p129520" />
			<content type="html"><![CDATA[<p>Помогите. Уже целый час бьюсь и пытаюсь понять почему таймер перестает работать?<br />Написал короткий код который показывает саму суть, что бы понятнее было.</p><p>Мне нужен Loop, который вызывает функции по очереди по кругу и нужен таймер который следил бы если что то происходит не так, то он вызывает функцию vernylsya()&nbsp; и начинает все сначало.<br />Для эмуляции что что-то не так надо нажать F2. После нажатия функция vernylsya() срабатывает, код переходит делать все с начало, но следящий таймер уже не работает.</p><div class="codebox"><pre><code>#Persistent

SetTimer, stuck, 200

Goto, start

return

;эмулируем ситуацию 
F2::
stuck := 1
return

start:
	Loop
	{
		take()
		sleep 500
		otnes()
		sleep 500
		vernylsya()
		sleep 500
	}
return

stuck:
ToolTip, %A_TickCount% ,100,150, 2
if (stuck == 1)
{
	ToolTip, Что-то пошло не так: %A_TickCount% ,100,150, 2
	vernylsya()
	stuck := 0
	Goto, start
}
return

take()
{
	ToolTip, Взял,100,100, 1
}

otnes()
{
	ToolTip, отнес делаль,100,100, 1
}

vernylsya()
{
	ToolTip, вернулся обратно,100,100, 1
}</code></pre></div><p>Даже если засунуть таймер в Loop то все равно таймер не возобновляет работу<br /></p><div class="codebox"><pre><code>#Persistent

SetTimer, stuck, 200

Goto, start

return

;эмулируем ситуацию 
F2::
stuck := 1
return

start:
	Loop
	{
		SetTimer, stuck, 200
		take()
		sleep 500
		otnes()
		sleep 500
		vernylsya()
		sleep 500
	}
return

stuck:
ToolTip, %A_TickCount% ,100,150, 2
if (stuck == 1)
{
	ToolTip, Что-то пошло не так: %A_TickCount% ,100,150, 2
	vernylsya()
	stuck := 0
	Goto, start
}
return

take()
{
	ToolTip, Взял,100,100, 1
}

otnes()
{
	ToolTip, отнес делаль,100,100, 1
}

vernylsya()
{
	ToolTip, вернулся обратно,100,100, 1
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Karagiozis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38736</uri>
			</author>
			<updated>2018-10-27T19:40:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=129520#p129520</id>
		</entry>
</feed>
