Thread

Bestimmt die Priorität oder Unterbrechbarkeit von Threads. Kann auch vorübergehend alle Timer deaktivieren.

Thread, Unterbefehl , Wert1, Wert2

Die Parameter Unterbefehl, Wert1 und Wert2 sind voneinander abhängig und können wie folgt verwendet werden.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

NoTimers

Verhindert Unterbrechungen durch Timer.

Thread, NoTimers , False

Dieser Unterbefehl verhindert Unterbrechungen durch Timer, bis der aktuelle Thread entweder endet, Thread, NoTimers, false ausführt oder von einem anderen Thread unterbrochen wird, der Timer erlaubt (in diesem Fall können Timer den unterbrechenden Thread unterbrechen, bis dieser endet).

Wenn dieser Unterbefehl im automatischen Ausführungsbereich (ganz oben im Skript) nicht verwendet wird, können alle Threads zunächst durch Timer unterbrochen werden (obwohl die Einstellungen des unten beschriebenen Interrupt-Unterbefehls weiterhin gelten). Wenn hingegen der automatische Ausführungsbereich diesen Unterbefehl einschaltet, aber nie ausschaltet, ist jeder neue Thread (z.B. Hotkey, benutzerdefinierter Menüpunkt oder Timer) zunächst immun gegen Unterbrechungen durch Timer.

Unabhängig von der Standardeinstellung laufen die Timer immer, wenn das Skript keine Threads hat (es sei denn, Pause wurde eingeschaltet).

Thread, NoTimers ist äquivalent zu Thread, NoTimers, true. Da der False-Parameter außerdem ein Ausdruck ist, wird True in 1 und False in 0 aufgelöst. Weitere Informationen finden Sie unter Boolesche Werte.

Priority

Ä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 sind davon nicht betroffen. Einzelheiten finden Sie unter Threads.

Aufgrund seiner Fähigkeit, Ereignisse zu puffern, ist der Critical-Befehl diesem Unterbefehl grundsätzlich überlegen.

Mit Process Priority kann die Prioritätsstufe des gesamten Skripts geändert werden. Zum Beispiel:

Process, Priority,, High

Interrupt

Ändert die Dauer der Unterbrechbarkeit für neue Threads.

Thread, Interrupt , Dauer, ZeilenAnzahl

Hinweis: Dieser Unterbefehl sollte sparsam verwendet werden, da die meisten Skripte stabiler laufen, wenn ihre Einstellungen nah an den Standardwerten liegen.

Standardmäßig ist jeder neue Thread für eine Dauer von 15 Millisekunden oder eine 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 wartet, 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.

Wenn einer der beiden Parameter 0 ist, ist jeder neue Thread sofort unterbrechbar. Wenn einer der beiden Parameter -1 ist, kann der Thread nicht als Ergebnis dieses Parameters unterbrochen werden. Das Maximum beider Parameter ist 2147483647.

Dieser Unterbefehl ist global, d.h. alle nachfolgenden Threads werden ihn berücksichtigen, auch dann, wenn der Unterbefehl irgendwo anders als im automatischen Ausführungsbereich verwendet wird. Allerdings sind unterbrochene Threads nicht betroffen, da ihre unterbrechungsfreie Zeit bereits abgelaufen ist. Der aktuelle Thread bleibt ebenfalls unberührt, es sei denn, er ist zum Zeitpunkt der Änderung des ZeilenAnzahl-Parameters unterbrechungsfrei, dann wird die neue ZeilenAnzahl für diesen Thread wirksam.

Wenn 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 entpuffert und verworfen.

Unabhängig davon wird ein Thread immer unterbrechbar gemacht, sobald dieser ein MsgBox-, InputBox-, FileSelectFile- oder FileSelectFolder-Dialogfenster anzeigt.

Jeder der beiden Parameter kann leer gelassen werden, um ihn nicht zu ändern.

Wenn Critical in der ersten Zeile der Subroutine oder Funktion des Threads angegeben ist, startet der Thread unterbrechungsfrei und der Interrupt-Unterbefehl hat keine Wirkung. Dies gilt jedoch nicht für gebundene Funktionen oder benutzerdefinierte Funktionsobjekte.

Bemerkungen

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

Beispiele

Erhöht die Priorität des aktuellen Threads ein wenig.

Thread, Priority, 1

Macht jeden neuen Thread sofort unterbrechbar.

Thread, Interrupt, 0

Macht jeden Thread nach 50 ms oder 2000 Zeilen unterbrechbar, je nachdem, was zuerst kommt.

Thread, Interrupt, 50, 2000