interrupt_operatorinterrupt_operatorInterruptOperatorInterruptOperator (Operator)

Name

interrupt_operatorinterrupt_operatorInterruptOperatorInterruptOperator — Abbrechen eines in einem anderen Thread laufenden Operators.

Signatur

interrupt_operator( : : HThreadID, Mode : )

Herror interrupt_operator(const Hlong HThreadID, const char* Mode)

Herror T_interrupt_operator(const Htuple HThreadID, const Htuple Mode)

void InterruptOperator(const HTuple& HThreadID, const HTuple& Mode)

static void HSystem::InterruptOperator(Hlong HThreadID, const HString& Mode)

static void HSystem::InterruptOperator(Hlong HThreadID, const char* Mode)

static void HSystem::InterruptOperator(Hlong HThreadID, const wchar_t* Mode)   (Nur Windows)

static void HOperatorSet.InterruptOperator(HTuple HThreadID, HTuple mode)

static void HSystem.InterruptOperator(int HThreadID, string mode)

Beschreibung

interrupt_operatorinterrupt_operatorInterruptOperatorInterruptOperatorInterruptOperator versucht den derzeit im Thread HThreadIDHThreadIDHThreadIDHThreadIDHThreadID laufenden Operator zu unterbrechen. Wenn der derzeit laufende Operator unterbrechbar ist, wird er die Ausführung auf die in ModeModeModeModemode gesetzte Art abbrechen (siehe Unten). Wenn der derzeit laufende Operator nicht unterbrechbar ist, oder wenn derzeit kein Operator in HThreadIDHThreadIDHThreadIDHThreadIDHThreadID läuft, hat interrupt_operatorinterrupt_operatorInterruptOperatorInterruptOperatorInterruptOperator keine Auswirkung. Insbesondere wird die Ausführung späterer Operatoren nicht beeinflusst.

Das einen Thread repräsentierende Handle kann mittels get_current_hthread_idget_current_hthread_idGetCurrentHthreadIdGetCurrentHthreadIdGetCurrentHthreadId ermittelt werden.

interrupt_operatorinterrupt_operatorInterruptOperatorInterruptOperatorInterruptOperator unterstützt momentan nur eine Art von Unterbrechung, die in ModeModeModeModemode gesetzt werden kann. Es ist zu beachten, dass der im anderen Thread laufende, abzubrechende Operator die entsprechende Unterbrechbarkeit ebenfalls unterstützen muss. Ob ein Operator unterbrechbar ist, und welche Arten der Unterbrechbarkeit er unterstützt, kann im Abschnitt Äusführungsinformationen" in der Referenzdokumentation des Operators eingesehen oder mit Hilfe des Parameters 'interrupt_mode'"interrupt_mode""interrupt_mode""interrupt_mode""interrupt_mode" des Operators get_operator_infoget_operator_infoGetOperatorInfoGetOperatorInfoGetOperatorInfo ausgelesen werden.

Einige Operatoren, für die in der Referenzdokumentation keine Unterbrechbarkeit angegeben ist, können dennoch an einigen Stellen ihrer Ausführung unterbrochen werden. Derartige Unterbrechbarkeiten sind allerdings nicht garantiert und können sich zwischen verschiedenen HALCON-Versionen ohne weitere Ankündigung verändern.

'cancel'"cancel""cancel""cancel""cancel":

Bricht die Ausführung des Operators ab. Alle eventuell bisher berechneten Zwischenergebnisse werden verworfen und der Operator gibt den Fehlercode H_ERR_CANCEL (22) zurück.

Achtung

Nicht alle Operatoren sind unterbrechbar. Wenn ein Operator unterbrechbar ist, ist dies im Abschnitt über Ausführungsinformationen in dessen Referenzdokumentation vermerkt.

Es gibt keine Garantie über die Granularität der Unterbrechungen. Diese kann vom Operator, dessen Eingabedaten und dem ausführenden System abhängen. Üblicherweise ist die Granularität besser als 10 ms.

Ausführungsinformationen

Parameter

HThreadIDHThreadIDHThreadIDHThreadIDHThreadID (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zu unterbrechender Thread.

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Art der Unterbrechung.

Defaultwert: 'cancel' "cancel" "cancel" "cancel" "cancel"

Werteliste: 'cancel'"cancel""cancel""cancel""cancel"

Beispiel (HDevelop)

global tuple HThreadID
get_current_hthread_id (HThreadID)
* call some slow operator...

* In a different thread
wait_seconds(2)
* Interrupt the long-running operator in the other thread
interrupt_operator (HThreadID, 'cancel')

Ergebnis

Wenn alle Parameter gültig sind liefert interrupt_operatorinterrupt_operatorInterruptOperatorInterruptOperatorInterruptOperator den Wert 2 (H_MSG_TRUE) zurück. Andernfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

get_current_hthread_idget_current_hthread_idGetCurrentHthreadIdGetCurrentHthreadIdGetCurrentHthreadId

Alternativen

set_operator_timeoutset_operator_timeoutSetOperatorTimeoutSetOperatorTimeoutSetOperatorTimeout

Siehe auch

get_current_hthread_idget_current_hthread_idGetCurrentHthreadIdGetCurrentHthreadIdGetCurrentHthreadId, set_operator_timeoutset_operator_timeoutSetOperatorTimeoutSetOperatorTimeoutSetOperatorTimeout

Modul

Foundation