Lingua

DispatchSource Classe

Definizione

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

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

Commenti

Le origini eventi dispatch 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 dispatch invierà il blocco del gestore eventi alla coda di destinazione.

Le nuove origini 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 venga recapitato qualsiasi evento.

Gestori eventi di origine

Per ricevere eventi dall'origine dispatch, è 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 non sicuro. Se il gestore eventi viene modificato durante la sospensione dell'origine 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 indipendentemente dalle code di destinazione che usano Suspend() e Resume() direttamente nell'origine dispatch. I dati che descrivono gli eventi che si verificano durante la sospensione di un'origine vengono uniti e recapitati dopo la ripresa dell'origine.

Il gestore non deve essere reentrant safe, perché non viene nuovamente inviato alla coda di destinazione fino al completamento di una chiamata precedente per l'origine dispatch.

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

Registration

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 persi.

Dopo aver registrato l'origine dispatch con il sistema sottostante ed è pronto 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 dispatch, impedendo qualsiasi ulteriore chiamata del relativo 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 utilizzata per determinare se l'origine specificata è stata annullata.

Quando un'origine dispatch viene annullata, il gestore di annullamento facoltativo verrà inviato alla coda di destinazione. È possibile specificare il gestore di annullamento tramite SetCancelHandler(Action). Questo gestore di annullamento viene richiamato una sola volta e solo come conseguenza diretta della chiamata Cancel()a .

Importante: è necessario un gestore di annullamento per i descrittori di file e le origini basate su porte mach per chiudere in modo sicuro il descrittore o distruggere la porta. La chiusura del descrittore o della porta prima dell'esecuzione del gestore di annullamento può comportare una race condition: 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à

Nome Descrizione
Handle

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)
IsCanceled

Determinare se l'origine specificata è stata annullata.

Owns

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)

Metodi

Nome Descrizione
Activate()

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DispatchObject)
Cancel()

Annulla in modo asincrono l'origine dispatch.

ClearHandle()

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)
Dispose()

Rilascia tutte le risorse usate da questo oggetto.

(Ereditato da DisposableObject)
Dispose(Boolean)

Rilascia le risorse usate dall'oggetto DispatchSource.

Equals(Object)

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)
GetCheckedHandle()

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)
GetHashCode()

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)
InitializeHandle(NativeHandle)

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DisposableObject)
Release()

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DispatchObject)
Resume()

Riprende l'origine dispatch.

Retain()

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DispatchObject)
SetCancelHandler(Action)

Fornisce un gestore di annullamento

SetEventHandler(Action)

È stato specificato un gestore da eseguire quando gli eventi vengono ricevuti nell'origine dispatch.

SetRegistrationHandler(Action)

Fornisce un gestore di registrazione

SetTargetQueue(DispatchQueue)

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

(Ereditato da DispatchObject)
Suspend()

Sospende l'origine dispatch.

Metodi di estensione

Nome Descrizione
GetHandle(INativeObject)

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

GetNonNullHandle(INativeObject, String)

DispatchSource è una classe di base usata per rerenset di origini eventi in grado di 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.

Si applica a