Thread

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

Thread Unterfunktion , Wert1, Wert2

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

Unterfunktionen

Geben Sie für Unterfunktion Folgendes an:

NoTimers

Verhindert Unterbrechungen durch Timer.

Thread "NoTimers" , False

Diese Unterfunktion 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 diese Einstellung nicht via Auto-Execute-Thread geändert wird, können alle Threads zunächst durch Timer unterbrochen werden (obwohl die Einstellungen der unten beschriebenen Interrupt-Unterfunktion weiterhin gelten). Wenn hingegen der Auto-Execute-Thread diese Einstellung 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 ihrer Fähigkeit, Ereignisse zu puffern, ist die Critical-Funktion dieser Unterfunktion grundsätzlich überlegen.

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

ProcessSetPriority "High"

Interrupt

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

Thread "Interrupt" , Dauer, ZeilenAnzahl

Hinweis: Diese Unterfunktion 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. Allerdings wird mindestens eine Zeile ausgeführt, bevor der Thread unterbrechbar wird, damit das Skript bei Bedarf Critical aktivieren kann.

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.

Diese Einstellung ist global, d.h. sie beeinflusst alle nachfolgenden Threads, auch dann, wenn diese Funktion nicht via Auto-Execute-Thread aufgerufen wurde. 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-, FileSelect- oder DirSelect-Dialogfenster anzeigt.

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

Bemerkungen

Aufgrund ihrer höheren Flexibilität und ihrer Fähigkeit, Ereignisse zu puffern, ist die Critical-Funktion grundsätzlich nützlicher als Thread "Interrupt" und Thread "Priority".

Critical, Threads, Hotkey, Menu-Objekt, SetTimer, Process-Funktionen

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