Freigeben über


DispatchSource.Cancel Methode

Definition

Bricht die Verteilerquelle asynchron ab.

public void Cancel ();
member this.Cancel : unit -> unit

Hinweise

Die Cancel() Funktion bricht die Verteilungsquelle asynchron ab, wodurch ein weiterer Aufruf des Ereignishandlerblocks verhindert wird. Der Abbruch unterbricht keinen derzeit ausgeführten Handlerblock (nicht präemptiv). Wenn eine Quelle abgebrochen wird, bevor sie zum ersten Mal fortgesetzt wird, wird ihr Ereignishandler nie aufgerufen.  (Beachten Sie in diesem Fall, dass die Quelle fortgesetzt werden muss, bevor sie freigegeben werden kann.)

Die IsCanceled Funktion kann verwendet werden, um zu bestimmen, ob die angegebene Quelle abgebrochen wurde.

Wenn eine Versandquelle abgebrochen wird, wird ihr optionaler Abbruchhandler an die Zielwarteschlange übermittelt. Der Abbruchhandler kann über SetCancelHandler(Action)angegeben werden. Dieser Abbruchhandler wird nur einmal und nur als direkte Folge des Aufrufens Cancel()aufgerufen.

Wichtig: Für Dateideskriptor- und Machport-basierte Quellen ist ein Abbruchhandler erforderlich, um den Deskriptor sicher zu schließen oder den Port zu zerstören. Das Schließen des Deskriptors oder Ports, bevor der Abbruchhandler ausgeführt wurde, kann zu einer Racebedingung führen: Wenn ein neuer Deskriptor mit dem gleichen Wert wie der zuletzt geschlossene Deskriptor zugewiesen wird, während der Ereignishandler der Quelle noch ausgeführt wird, kann der Ereignishandler Daten in den falschen Deskriptor lesen/schreiben.

Gilt für: