Language

DispatchSource クラス

定義

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

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

注釈

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

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

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

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

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

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

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

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

Registration

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

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

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

キャンセル

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

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

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

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

プロパティ

Name 説明
Handle

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

(継承元 DisposableObject)
IsCanceled

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

Owns

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

(継承元 DisposableObject)

メソッド

Name 説明
Activate()

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

(継承元 DispatchObject)
Cancel()

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

ClearHandle()

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

(継承元 DisposableObject)
Dispose()

このオブジェクトで使用されるすべてのリソースを解放します。

(継承元 DisposableObject)
Dispose(Boolean)

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

Equals(Object)

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

(継承元 DisposableObject)
GetCheckedHandle()

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

(継承元 DisposableObject)
GetHashCode()

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

(継承元 DisposableObject)
InitializeHandle(NativeHandle)

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

(継承元 DisposableObject)
Release()

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

(継承元 DispatchObject)
Resume()

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

Retain()

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

(継承元 DispatchObject)
SetCancelHandler(Action)

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

SetEventHandler(Action)

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

SetRegistrationHandler(Action)

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

SetTargetQueue(DispatchQueue)

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

(継承元 DispatchObject)
Suspend()

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

拡張メソッド

Name 説明
GetHandle(INativeObject)

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

GetNonNullHandle(INativeObject, String)

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

適用対象