Thread

スレッドの優先順位や割り込み可能性を設定します。また、すべてのタイマーを一時的に無効化することもできます。

Thread SubFunction , Value1, Value2

SubFunctionValue1Value2の各パラメータは互いに依存しており、その使い方は後述する。

Sub-functions

SubFunctionには以下のいずれかを指定する:

NoTimers

あらゆるタイマーからの割り込みを防ぐ。

Thread "NoTimers" , False

このサブファンクションは、現在のスレッドが終了するか、スレッド "NoTimers"を実行するか、falseを実行するか、タイマーを許可する他のスレッドによって割り込まれるまで(この場合、タイマーは割り込まれたスレッドが終了するまで割り込むことができる)、いかなるタイマーからの割り込みも防ぐ。

If this setting is not changed by the auto-execute thread, all threads start off as interruptible by timers (though the settings of the Interrupt sub-function described below will still apply). 対照的に、自動実行スレッドがこの設定をオンにし、決してオフにしない場合、新しく起動するスレッドホットキーカスタムメニュー項目タイマーなど)はすべて、タイマーによる中断を受けずに起動する。

デフォルトの設定にかかわらず、スクリプトにスレッドがない場合、タイマーは常に動作する(一時停止がオンになっている場合を除く)。

スレッド "NoTimers"スレッド "NoTimers"と等価である。In addition, since the False parameter is an expression, true resolves to 1, and false to 0. See Boolean Values for details.

Priority

現在のスレッドの優先度を変更する。

スレッド「優先度」、レベル

現在のスレッドの新しい優先度を示す -2147483648 から 2147483647 までの整数(または)をLevelに指定する。これは他のスレッドには影響しない。詳細はスレッドを参照。

イベントをバッファリングする能力があるため、一般的には、このサブファンクションよりもクリティカルファンクションの方が優れている。

関連して、スクリプト全体のOSの優先度は、ProcessSetPriorityで変更できる。事例:

ProcessSetPriority "High"

Interrupt

新しく起動されたスレッドの割り込み可能時間を変更する。

Thread "Interrupt" , Duration, LineCount

注意:ほとんどのスクリプトはデフォルトに近い設定の方が安定して動作するため、このサブファンクションは控えめに使用すること。

デフォルトでは、新しく起動されたスレッドは、継続時間15ミリ秒またはLineCountが1000スクリプト行のどちらか早い方の間、中断されない。これにより、起動待ちの他のスレッド(バッファリングされたホットキーや、すべての実行が予定されている一連の定時サブルーチンなど)に即座に割り込まれることなく、スレッドを終了させることができる。

注:システムのティックカウントの最小分解能は10~16ミリ秒であるため、Durationが17未満の場合、実際の持続時間が短くなったり、即座に中断したりする可能性がある。しかし、スレッドが割り込み可能になる前に少なくとも1行は実行されるので、スクリプトは必要に応じてクリティカルを有効にすることができる。

いずれかのパラメーターが0であれば、新しく起動されたスレッドは即座に割り込み可能となる。いずれかのパラメータが-1の場合、そのパラメータの結果としてスレッドが中断されることはない。両パラメーターの最大値は2147483647である。

この設定はグローバルであり、自動実行スレッドからこの関数が呼び出されなかったとしても、後続のすべてのスレッドに影響する。しかし、中断されたスレッドは、中断されない期間がすでに終了しているため、影響を受けない。同様に、現在のスレッドは、LineCountパラメータが変更された時点で中断不可能な場合を除き、影響を受けない。

現在のスレッドが中断されていない間にホットキーが押されたり、カスタムメニュー項目が選択されたりすると、そのイベントはバッファリングされる。つまり、現在のスレッドが終了するか、割り込み可能になるかのどちらか先になったときに起動する。この例外は、現在のスレッドが終了する前に割り込み可能になり、バッファリングされたイベントよりも優先順位が高い場合である。

このサブ関数に関係なく、スレッドはMsgBoxInputBoxFileSelectDirSelectダイアログを表示した瞬間に割り込み可能になる。

どちらかのパラメータを変更しないように空白のままにすることもできる。

備考

柔軟性が高く、イベントをバッファリングできるため、Critical関数はスレッド「割り込み」スレッド「優先順位」よりも一般的に有用である。

Critical, Threads, Hotkey, Menu object, SetTimer, Process functions

現在のスレッドの優先順位を平均より少し上にする。

Thread "Priority", 1

新しく起動したスレッドを即座に中断可能にする。

Thread "Interrupt", 0

各スレッドは、50ミリ秒または2000行のどちらか早い方の後に割り込み可能になる。

Thread "Interrupt", 50, 2000