Bestimmt die Priorität oder Unterbrechbarkeit von Threads. Zudem können damit vorübergehend alle Timer deaktiviert werden.
Thread, Unterbefehl , Wert1, Wert2
Die Parameter Unterbefehl, Wert1 und Wert2 sind voneinander abhängig und können wie folgt genutzt werden.
Geben Sie für Unterbefehl Folgendes an:
Verhindert Unterbrechungen durch beliebige Timer.
Thread, NoTimers , TrueOderFalse
Dieser Unterbefehl verhindert Unterbrechungen von beliebigen Timern, bis der aktuelle Thread entweder endet, Thread, NoTimers, false
ausgeführt wird oder von einem anderen Thread unterbrochen wird, der Timer erlaubt (in diesem Fall können Timer den unterbrechenden Thread unterbrechen, bis er endet).
Wenn dieser Unterbefehl nicht im automatischen Ausführungsbereich (ganz oben im Skript) verwendet wird, sind alle Threads vorerst via Timer unterbrechbar (es sei denn, der Interrupt-Unterbefehl [unten] wurde verwendet). Wird dieser Unterbefehl im automatischen Ausführungsbereich eingeschaltet, aber nie ausgeschaltet, ist jeder neu gestartete Thread (z. B. Hotkey, benutzerdefinierter Menüpunkt oder Timer) vorerst immun gegen Unterbrechungen via Timer.
Unabhängig von der Standardeinstellung laufen Timer auch dann, wenn das Skript keine Threads hat (es sei denn, Pause wurde eingeschaltet).
Thread, NoTimers
ist das gleiche wie Thread, NoTimers, true
. Da TrueOderFalse außerdem ein Ausdruck ist, wird True in 1 und False in 0 aufgelöst.
Ändert die Prioritätsstufe des aktuellen Threads.
Thread, Priority, Stufe
Geben Sie für Stufe einen Integer zwischen -2147483648 und 2147483647 (oder einen Ausdruck) an, um die neue Priorität für den aktuellen Thread zu bestimmen. Andere Threads werden davon nicht beeinflusst. Siehe Threads für weitere Details.
Aufgrund seiner Fähigkeit, Ereignisse zu puffern, ist der Critical-Befehl grundsätzlich diesem Unterbefehl überlegen.
Mit Process Priority kann die Prioritätsstufe des gesamten Skripts geändert werden. Zum Beispiel:
Process, Priority,, High
Ändert die Dauer der Unterbrechbarkeit für neu gestartete Threads.
Thread, Interrupt , Dauer, ZeilenAnzahl
Hinweis: Dieser Unterbefehl sollte sparsam verwendet werden, weil die meisten Skripte stabiler laufen, wenn sie Einstellungen haben, die dicht bei den Standardwerten liegen.
Standardmäßig ist jeder neu gestartete Thread für eine Dauer von 15 Millisekunden oder bei einer ZeilenAnzahl von 1000 Zeilen unterbrechungsfrei, je nachdem, was zuerst kommt. Dadurch hat der Thread die Chance, seine Arbeit zu beenden, anstatt sofort von einem anderen Thread unterbrochen zu werden, der darauf warten, seine Arbeit zu beginnen (z. B. ein gepufferter Hotkey oder eine Reihe von zeitgesteuerten Subroutinen, die ausgeführt werden sollen).
Hinweis: Eine Dauer kleiner als 17 kann dazu führen, dass die tatsächliche Dauer kürzer ist oder der Thread sofort unterbrochen wird, da der systeminterne Taktzähler eine Mindestauflösung von 10 bis 16 Millisekunden hat.
Sobald einer der beiden Parameter 0 ist, wird jeder neu gestartete Thread sofort unterbrochen. Sobald einer der beiden Parameter -1 ist, kann der Thread aufgrund dieses Parameters nicht mehr unterbrochen werden. Der Höchstwert beider Parameter ist 2147483647.
Dieser Unterbefehl ist global - das heißt, dass der Unterbefehl von allen nachfolgenden Threads berücksichtigt wird, sogar wenn der Unterbefehl irgendwo anders als im automatischen Ausführungsbereich verwendet wird. Auf unterbrochene Threads hat dies keinen Effekt, weil ihr unterbrechungsfreier Zeitraum bereits abgelaufen ist. Der aktuelle Thread bleibt ebenfalls unberührt, es sei denn, dieser Thread ist zum Zeitpunkt der Änderung des ZeilenAnzahl-Parameters unterbrechungsfrei, dann wird die neue ZeilenAnzahl für diesen Thread wirksam.
Falls ein Hotkey gedrückt oder ein benutzerdefinierter Menüpunkt ausgewählt wird, während der aktuelle Thread unterbrechungsfrei ist, wird dieses Ereignis gepuffert. Mit anderen Worten: Das Ereignis wird erst gestartet, wenn der aktuelle Thread fertig oder wieder unterbrechbar ist, je nachdem, was zuerst kommt. Die Ausnahme hiervon ist, wenn der Thread vor seiner Beendigung unterbrechbar gemacht wird und eine höhere Priorität als das gepufferte Ereignis hat, dann wird das gepufferte Ereignis nicht mehr gepuffert und verworfen.
Unabhängig davon wird ein Thread immer unterbrechbar gemacht, sobald dieser ein MsgBox-, InputBox-, FileSelectFile- oder FileSelectFolder-Dialogfenster anzeigt.
Jeder Parameter kann leer gelassen werden, um diesen nicht zu ändern.
Wenn Critical als erste Zeile in der Subroutine oder Funktion des Threads angegeben wird, startet der Thread unterbrechungsfrei und der Interrupt-Unterbefehl hat keine Wirkung. Allerdings gilt das nicht für gebundene Funktionen oder benutzerdefinierte Funktionsobjekte.
Aufgrund seiner höheren Flexibilität und seiner Fähigkeit, Ereignisse zu puffern, ist der Critical-Befehl grundsätzlich nützlicher als die Unterbefehle Interrupt und Priority.
Critical, Threads, Hotkey, Menu, SetTimer, Process