Condividi tramite


DispatchSource Classe

Definizione

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

public class DispatchSource : CoreFoundation.DispatchObject
type DispatchSource = class
    inherit DispatchObject
Ereditarietà
DispatchSource
Ereditarietà
Derivato

Commenti

Le origini eventi di invio possono essere usate per monitorare un'ampia gamma di oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito dei segnali e timer.  Per monitorare un tipo specifico di origine, creare un'istanza di una delle sottoclassi DispatchSource:

Quando si verifica una modifica dello stato, l'origine di invio invierà il blocco del gestore eventi alla coda di destinazione.

Le origini appena create vengono create in uno stato sospeso. Dopo aver configurato l'origine impostando un gestore eventi, un gestore di annullamento, un gestore di registrazione, un contesto e così via, l'origine deve essere attivata da una chiamata a Resume() prima che vengano recapitati eventi.

Gestori eventi di origine

Per ricevere eventi dall'origine di invio, è necessario specificare un gestore eventi tramite SetEventHandler(Action). Il gestore eventi viene inviato alla coda di destinazione dell'origine quando lo stato dell'handle di sistema sottostante cambia o quando si verifica un evento. Se un'origine viene ripresa senza alcun set di blocchi del gestore eventi, gli eventi verranno ignorati in modo silenzioso. Se il gestore eventi viene modificato mentre l'origine viene sospesa o da un blocco in esecuzione in una coda seriale che è la coda di destinazione dell'origine, la chiamata del gestore eventi successivo userà il nuovo blocco.

Le origini di invio possono essere sospese o riprese in modo indipendente dalle code di destinazione usando Suspend() e Resume() nell'origine di invio direttamente. I dati che descrivono gli eventi che si verificano durante la sospensione di un'origine vengono uniti e recapitati una volta ripresa l'origine.

Il gestore non deve essere reentrant safe, poiché non viene reubmesso nella coda di destinazione fino a quando non è stata completata alcuna chiamata precedente per l'origine di invio.

Per annullare l'impostazione del gestore eventi, chiamare SetEventHandler(Action) passare null come argomento.

Registrazione

Quando Resume() viene chiamato su un'origine sospesa o appena creata, potrebbe verificarsi un breve ritardo prima che l'origine sia pronta a ricevere eventi dall'handle di sistema sottostante. Durante questo ritardo, il gestore eventi non verrà richiamato e gli eventi verranno dimenticati.

Una volta registrata l'origine di invio con il sistema sottostante ed è pronta per elaborare tutti gli eventi, il gestore di registrazione facoltativo verrà inviato alla coda di destinazione. Questo gestore di registrazione può essere specificato tramite SetRegistrationHandler(Action).

Il gestore eventi non verrà chiamato fino al termine del gestore di registrazione. Se l'origine viene annullata (vedere di seguito) prima della registrazione, il gestore di registrazione non verrà chiamato.

Annullamento

La Cancel() funzione annulla in modo asincrono l'origine di invio, impedendo qualsiasi ulteriore chiamata del blocco del gestore eventi. L'annullamento non interrompe un blocco del gestore attualmente in esecuzione (non preemptive). Se un'origine viene annullata prima della prima ripresa, il gestore eventi non verrà mai chiamato. In questo caso, si noti che l'origine deve essere ripresa prima che possa essere rilasciata.

La IsCanceled funzione può essere usata per determinare se l'origine specificata è stata annullata.

Quando un'origine di invio viene annullata, il gestore di annullamento facoltativo verrà inviato alla coda di destinazione. Il gestore di annullamento può essere specificato tramite SetCancelHandler(Action). Questo gestore di annullamento viene richiamato una sola volta e solo come conseguenza diretta della chiamata Cancel().

Importante: è necessario un gestore di annullamento per il descrittore di file e le origini basate su porta mach per chiudere in modo sicuro il descrittore o distruggere la porta. La chiusura del descrittore o della porta prima dell'esecuzione del gestore dell'annullamento può causare una condizione di gara: se un nuovo descrittore viene allocato con lo stesso valore del descrittore chiuso di recente mentre il gestore eventi dell'origine è ancora in esecuzione, il gestore eventi può leggere/scrivere dati nel descrittore errato.

Proprietà

Handle

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
IsCanceled

Determinare se l'origine specificata è stata annullata.

Metodi

Activate()

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
Cancel()

Annulla in modo asincrono l'origine di invio.

Check()
Obsoleti.

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
Dispose()

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
Dispose(Boolean)

Rilascia le risorse usate dall'oggetto DispatchSource.

Equals(Object)

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
GetHashCode()

Restituisce il codice hash per questo oggetto

(Ereditato da DispatchObject)
InitializeHandle(IntPtr)

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da NativeObject)
Release()

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
Resume()

Riprende l'origine di invio.

Retain()

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
SetCancelHandler(Action)

Fornisce un gestore di annullamento

SetEventHandler(Action)

Specificato un gestore da eseguire quando gli eventi vengono ricevuti nell'origine di invio.

SetRegistrationHandler(Action)

Fornisce un gestore di registrazione

SetTargetQueue(DispatchQueue)

DispatchSource è una classe di base usata per eseguire il reprenset di origini eventi che possono monitorare diversi oggetti di sistema ed eventi, tra cui descrittori di file, porte mach, processi, nodi del file system virtuale, recapito di segnali e timer.

(Ereditato da DispatchObject)
Suspend()

Sospende l'origine di invio.

Si applica a