共用方式為


DispatchSource 類別

定義

DispatchSource 是用來重譯事件來源的基類,可監視各種系統物件和事件,包括檔案描述元、mach 埠、進程、虛擬檔案系統節點、訊號傳遞和計時器。

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
繼承
DispatchSource
繼承
衍生

備註

分派事件來源可用來監視各種系統物件和事件,包括檔案描述項、mach 埠、進程、虛擬檔案系統節點、訊號傳遞和計時器。  若要監視特定種類的來源,您可以建立其中一個 DispatchSource 子類別的實例:

發生狀態變更時,分派來源會將其事件處理常式區塊提交至其目標佇列。

新建立的來源會以暫停狀態建立。 藉由設定事件處理常式、取消處理常式、註冊處理常式、內容等來設定來源之後,來源必須透過呼叫 Resume() 來啟動,才能傳遞任何事件。

來源事件處理常式

若要從分派來源接收事件,應該透過 SetEventHandler(Action) 指定事件處理常式。 當基礎系統控制碼的狀態變更或事件發生時,事件處理常式會提交至來源的目標佇列。 如果來源在未設定事件處理常式區塊的情況下繼續執行,則會以無訊息方式忽略事件。 如果在來源暫停時變更事件處理常式,或從屬於來源目標佇列之序列佇列上執行的區塊變更,則下一個事件處理常式調用會使用新的 區塊。

分派來源可能會暫停或繼續,而不受其目標佇列 Suspend() 使用 和 Resume() 直接在分派來源上繼續。 描述在暫停來源時所發生事件的資料會在來源繼續之後聯合並傳遞。

處理常式不需要重新進入安全,因為它不會重新提交至目標佇列,直到該分派來源的任何先前叫用完成為止。

若要取消設定事件處理常式,請呼叫 SetEventHandler(Action) 傳遞 null 作為引數。

註冊

當 在暫停或新建立的來源上呼叫 時 Resume() ,來源準備從基礎系統控制碼接收事件之前,可能會有短暫的延遲。 在此延遲期間,不會叫用事件處理常式,而且會遺漏事件。

一旦分派來源向基礎系統註冊,並準備好處理其選擇性註冊處理常式的所有事件,就會提交至其目標佇列。 此註冊處理常式可以透過 SetRegistrationHandler(Action) 指定。

在註冊處理常式完成之前,將不會呼叫事件處理常式。 如果來源在註冊之前 (看到下方) 取消,則不會呼叫其註冊處理常式。

取消

Cancel() 式會以非同步方式取消分派來源,以防止其事件處理常式區塊的任何進一步調用。 取消不會中斷目前正在執行的處理常式區塊, (非先占式) 。 如果在第一次繼續之前取消來源,則永遠不會呼叫其事件處理常式。 (在此情況下,請注意,來源必須先繼續,才能發行。)

IsCanceled 式可用來判斷指定的來源是否已取消。

當分派來源取消時,其選擇性取消處理常式會提交至其目標佇列。 取消處理常式可以透過 SetCancelHandler(Action) 指定。 此取消處理常式只會叫用一次,而且只會直接呼叫 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()

暫停分派來源。

適用於