Thread

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

Thread[編集]

現在のスレッドの割り込み優先度を設定する。 またタイマー割り込みに可否を設定する。

Thread, NoTimers [, false]
Thread, Priority,n
Thread, Interrupt, Duration [, LineCount]

Thread, NoTimers [, false][編集]

現在のスレッドの実行中の間、タイマー割り込みを禁止する。
Thread, NoTimers, false とするとタイマー割り込み禁止を解除できる。

タイマー割り込みを禁止しているスレッドが他のスレッドに割り込まれた場合、 割り込んだスレッドでタイマーを禁止していなければタイマー割り込みは有効となる。
割り込んだスレッドが終了し、元のスレッドに処理が戻ると再びタイマー割り込みは禁止となる。

AutoExecuteセクションがタイマー割り込み禁止状態のまま終了した場合、そのスクリプトでは全てのスレッドがタイマー割り込み禁止で開始されるようになる。
この場合でも、スレッドが実行されていない間ならタイマーイベントの開始は可能。

Thread, Priority, n[編集]

n に現在のスレッドの割り込み優先度を指定する。
優先度は -2147483648 ~ 2147483647 の数値で指定する。(の利用可)
これより優先度の低いイベントは割り込むことができなくなる。

イベントバッファの関係上、"Critical" は Thread, Priority に優越する。

関連事項として、スクリプトを実行するプロセスの優先度を上げるには "Process, Priority,, High" とする。

Thread, Interrupt, Duration [, LineCount][編集]

スレッド開始から割り込みを絶対禁止する時間を設定する。
指定ミリ秒経過するか、指定行数(コマンド数)実行するまで、優先度にかかわらず割り込みは行われない。
Durationにミリ秒、LineCountに行数を設定する。
デフォルトは15ミリ秒、1000行。

どちらかを 0にすると、始まったばかりのスレッドでも割り込まれるようになる。
どちらかを -1にすると、割り込みは絶対に行われなくなる。

この設定は、スクリプト全体で有効。
ただし、一度割り込み禁止期間を過ぎたスレッドを再度割り込み禁止にすることは出来ない。

割り込み禁止期間の間に他のスレッドが起動しようとしたとき、そのスレッドはバッファされ、実行中のスレッドが終了するか、割り込み禁止期間を過ぎた時点で実行される。
ただし、割り込み禁止期間を過ぎた時点で実行中のスレッドが割り込もうとしたスレッドより優先度が高い場合、割り込みは行われず、スレッドは消滅する。

この設定に関わらず、実行中のスレッドはダイアログ(MsgBox, InputBox, FileSelectFile, FileSelectFolder) が表示された段階で割り込み可能となる。

Related[編集]

Critical, スレッド, Hotkey, Menu, SetTimer, Process

Example(s)[編集]

Thread, Priority, 1		; Make priority of current thread slightly above average.
Thread, Interrupt, 0		; Make each newly launched thread immediately interruptible:
Thread, Interrupt, 50, 2000	; Make each thread interruptible after 50ms or 2000 lines, whichever comes first.