次の方法で共有


DispatchSource クラス

定義

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
継承
DispatchSource
継承
派生

注釈

ディスパッチ イベント ソースは、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視するために使用できます。  特定の種類のソースを監視するには、DispatchSource サブクラスの 1 つのインスタンスを作成します。

状態の変更が発生すると、ディスパッチ ソースはそのイベント ハンドラー ブロックをターゲット キューに送信します。

新しく作成されたソースは、中断状態で作成されます。 イベント ハンドラー、キャンセル ハンドラー、登録ハンドラー、コンテキストなどを設定してソースを構成したら、イベントが配信される前に、 の呼び出しによってソースを Resume() アクティブ化する必要があります。

ソース イベント ハンドラー

ディスパッチ ソースからイベントを受信するには、 を使用してイベント ハンドラーを SetEventHandler(Action)指定する必要があります。 イベント ハンドラーは、基になるシステム ハンドルの状態が変更されたとき、またはイベントが発生したときに、ソースのターゲット キューに送信されます。 イベント ハンドラー ブロックが設定されていない状態でソースが再開された場合、イベントは静かに無視されます。 ソースが中断されている間、またはソースのターゲット キューであるシリアル キューで実行されているブロックからイベント ハンドラーが変更された場合、次のイベント ハンドラー呼び出しでは新しいブロックが使用されます。

ディスパッチ ソースは、ディスパッチ ソースで と を直接使用してSuspend()Resume()、ターゲット キューとは別に中断または再開できます。 ソースが中断されている間に発生するイベントを記述するデータは結合され、ソースが再開されると配信されます。

ハンドラーは、そのディスパッチ ソースの以前の呼び出しが完了するまでターゲット キューに再送信されないため、再入可能セーフである必要はありません。

イベント ハンドラーの設定を解除するには、引数として pass null を呼び出SetEventHandler(Action)します。

登録

Resume() 中断されたソースまたは新しく作成されたソースで が呼び出されると、ソースが基になるシステム ハンドルからイベントを受信する準備が整う前に、少し遅延が発生する可能性があります。 この遅延の間、イベント ハンドラーは呼び出されず、イベントは見逃されます。

ディスパッチ ソースが基になるシステムに登録され、すべてのイベントを処理する準備ができたら、そのオプションの登録ハンドラーがターゲット キューに送信されます。 この登録ハンドラーは、 を使用して SetRegistrationHandler(Action)指定できます。

登録ハンドラーが完了するまで、イベント ハンドラーは呼び出されません。 登録前にソースがキャンセルされた場合 (下記参照)、その登録ハンドラーは呼び出されません。

キャンセル

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

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

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

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

プロパティ

Handle

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
IsCanceled

指定したソースが取り消されたかどうかを確認します。

メソッド

Activate()

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
Cancel()

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

Check()
古い.

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
Dispose()

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
Dispose(Boolean)

DispatchSource オブジェクトによって使用されるリソースを解放します。

Equals(Object)

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
GetHashCode()

このオブジェクトのハッシュコードを返します

(継承元 DispatchObject)
InitializeHandle(IntPtr)

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 NativeObject)
Release()

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
Resume()

ディスパッチ ソースを再開します。

Retain()

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
SetCancelHandler(Action)

キャンセル ハンドラーを提供します

SetEventHandler(Action)

ディスパッチ ソースでイベントを受信したときに実行するハンドラーを指定しました。

SetRegistrationHandler(Action)

登録ハンドラーを提供します

SetTargetQueue(DispatchQueue)

DispatchSource は、ファイル記述子、mach ポート、プロセス、仮想ファイルシステム ノード、シグナル配信、タイマーなど、さまざまなシステム オブジェクトとイベントを監視できるイベント ソースを再調整するために使用される基本クラスです。

(継承元 DispatchObject)
Suspend()

ディスパッチ ソースを中断します。

適用対象