次の方法で共有


DispatchSource.Cancel メソッド

定義

ディスパッチ ソースを非同期的に取り消します。

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

注釈

関数は Cancel() ディスパッチ ソースを非同期的に取り消し、イベント ハンドラー ブロックのそれ以上の呼び出しを防ぎます。 取り消しても、現在実行中のハンドラー ブロックは中断されません (プリエンプティブではありません)。 ソースが最初に再開される前に取り消された場合、そのイベント ハンドラーは呼び出されません。  (この場合は、ソースを解放する前に再開する必要があることに注意してください)。

関数を IsCanceled 使用して、指定したソースが取り消されたかどうかを判断できます。

ディスパッチ ソースが取り消されると、オプションのキャンセル ハンドラーがターゲット キューに送信されます。 キャンセル ハンドラーは、 を使用して SetCancelHandler(Action)指定できます。 このキャンセル ハンドラーは 1 回だけ呼び出され、 を呼び出した場合の直接的な結果としてのみ呼び出されます Cancel()

重要: 記述子を安全に閉じるか、ポートを破棄するには、ファイル記述子と mach ポート ベースのソースにキャンセル ハンドラーが必要です。 キャンセル ハンドラーが実行される前に記述子またはポートを閉じると競合状態になる可能性があります。ソースのイベント ハンドラーの実行中に、新しい記述子が最近閉じられた記述子と同じ値で割り当てられている場合、イベント ハンドラーは間違った記述子にデータの読み取り/書き込みを行う可能性があります。

適用対象