Condividi tramite


Dispatcher Classe

Definizione

Fornisce servizi per la gestione della coda di elementi di lavoro per un thread.

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
Ereditarietà
Dispatcher

Esempio

Nell'esempio seguente viene illustrato come inserire un'operazione in un oggetto Dispatcher. Per il codice sorgente completo di questo esempio, vedere Single-Threaded Application with Long-Running Calculation Sample (Esempio di calcolo di Long-Running).

Prima di tutto, viene creato un delegato che non accetta argomenti.

public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()

BeginInvoke(DispatcherPriority, Delegate) Viene quindi chiamato . Questa chiamata a BeginInvoke(DispatcherPriority, Delegate) accetta due parametri: la priorità, impostata su DispatcherPriority.Normale il callback, passato tramite un'istanza del delegato NextPrimeDelegate.

startStopButton.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,
    new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))

Commenti

mantiene Dispatcher una coda di elementi di lavoro con priorità per un thread specifico.

Quando un oggetto Dispatcher viene creato in un thread, diventa l'unico Dispatcher che può essere associato al thread, anche se viene Dispatcher arrestato.

Se si tenta di ottenere per CurrentDispatcher il thread corrente e un oggetto Dispatcher non è associato al thread, verrà creato un oggetto Dispatcher . Un Dispatcher oggetto viene creato anche quando si crea un oggetto DispatcherObject. Se si crea un oggetto Dispatcher in un thread in background, assicurarsi di arrestare il dispatcher prima di uscire dal thread.

Se un oggetto Dispatcher viene arrestato, non può essere riavviato.

In WPF è possibile accedere a un DispatcherObject oggetto solo a Dispatcher cui è associato. Ad esempio, un thread in background non può aggiornare il contenuto di un Button oggetto associato a nel thread dell'interfaccia Dispatcher utente. Per consentire al thread in background di accedere alla Content proprietà di Button, il thread in background deve delegare il lavoro all'oggetto Dispatcher associato al thread dell'interfaccia utente. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrono ed BeginInvoke è asincrono. L'operazione viene aggiunta alla coda dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.

Se BeginInvoke viene chiamato su un oggetto Dispatcher che ha arrestato, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.

Tutti i metodi in Dispatcher, ad eccezione di DisableProcessing, sono a thread libero.

Gli oggetti che derivano da DispatcherObject hanno affinità di thread.

Gli oggetti che derivano da Freezable sono a thread libero quando vengono bloccati. Per altre informazioni, vedere Cenni preliminari sugli oggetti Freezable.

Proprietà

Nome Descrizione
CurrentDispatcher

Ottiene l'oggetto Dispatcher per il thread attualmente in esecuzione e crea un nuovo Dispatcher oggetto se non è già associato al thread.

HasShutdownFinished

Determina se l'oggetto ha terminato l'arresto Dispatcher .

HasShutdownStarted

Determina se l'oggetto Dispatcher sta arrestando.

Hooks

Ottiene la raccolta di hook che forniscono informazioni aggiuntive sull'evento sull'oggetto Dispatcher.

Thread

Ottiene il thread Dispatcher a cui è associato.

Metodi

Nome Descrizione
BeginInvoke(Delegate, DispatcherPriority, Object[])

Esegue il delegato specificato in modo asincrono con gli argomenti specificati, con la priorità specificata, sul thread in cui è stato creato l'oggetto Dispatcher .

BeginInvoke(Delegate, Object[])

Esegue il delegato specificato in modo asincrono con gli argomenti specificati nel thread in cui è stato creato l'oggetto Dispatcher .

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Esegue il delegato specificato in modo asincrono alla priorità specificata e con la matrice di argomenti specificata nel thread Dispatcher a cui è associato .

BeginInvoke(DispatcherPriority, Delegate, Object)

Esegue il delegato specificato in modo asincrono alla priorità specificata e con l'argomento specificato nel thread Dispatcher a cui è associato.

BeginInvoke(DispatcherPriority, Delegate)

Esegue il delegato specificato in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato.

BeginInvokeShutdown(DispatcherPriority)

Avvia l'arresto dell'oggetto Dispatcher in modo asincrono.

CheckAccess()

Determina se il thread chiamante è il thread associato a questo Dispatcheroggetto .

DisableProcessing()

Disabilita l'elaborazione della Dispatcher coda.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
ExitAllFrames()

Richiede l'uscita di tutti i fotogrammi, inclusi i frame annidati.

FromThread(Thread)

Ottiene l'oggetto Dispatcher per il thread specificato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Esegue in modo sincrono l'oggetto specificato Action con la priorità specificata nel thread Dispatcher a cui è associato .

Invoke(Action, DispatcherPriority, CancellationToken)

Esegue in modo sincrono l'oggetto specificato Action con la priorità specificata nel thread Dispatcher a cui è associato .

Invoke(Action, DispatcherPriority)

Esegue in modo sincrono l'oggetto specificato Action con la priorità specificata nel thread Dispatcher a cui è associato .

Invoke(Action)

Esegue l'oggetto specificato Action in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(Delegate, DispatcherPriority, Object[])

Esegue il delegato specificato alla priorità specificata con gli argomenti specificati in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(Delegate, Object[])

Esegue il delegato specificato con gli argomenti specificati in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(Delegate, TimeSpan, DispatcherPriority, Object[])

Esegue il delegato specificato all'interno dell'intervallo di tempo designato alla priorità specificata con gli argomenti specificati in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(Delegate, TimeSpan, Object[])

Esegue il delegato specificato all'interno dell'intervallo di tempo designato alla priorità specificata con gli argomenti specificati in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(DispatcherPriority, Delegate, Object, Object[])

Esegue il delegato specificato alla priorità specificata con gli argomenti specificati in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(DispatcherPriority, Delegate, Object)

Esegue il delegato specificato alla priorità specificata con l'argomento specificato in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(DispatcherPriority, Delegate)

Esegue il delegato specificato in modo sincrono alla priorità specificata nel thread Dispatcher a cui è associato .

Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[])

Esegue il delegato specificato alla priorità specificata con gli argomenti specificati in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Esegue il delegato specificato alla priorità specificata con l'argomento specificato in modo sincrono sul thread Dispatcher a cui è associato .

Invoke(DispatcherPriority, TimeSpan, Delegate)

Esegue il delegato specificato in modo sincrono alla priorità specificata e con il valore di timeout specificato nel thread Dispatcher creato.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan)

Esegue in modo sincrono l'oggetto specificato Func<TResult> con la priorità specificata nel thread Dispatcher a cui è associato .

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Esegue in modo sincrono l'oggetto specificato Func<TResult> con la priorità specificata nel thread Dispatcher a cui è associato .

Invoke<TResult>(Func<TResult>, DispatcherPriority)

Esegue in modo sincrono l'oggetto specificato Func<TResult> con la priorità specificata nel thread Dispatcher a cui è associato .

Invoke<TResult>(Func<TResult>)

Esegue l'oggetto specificato Func<TResult> in modo sincrono sul thread Dispatcher a cui è associato .

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Esegue l'oggetto specificato Action in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato .

InvokeAsync(Action, DispatcherPriority)

Esegue l'oggetto specificato Action in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato .

InvokeAsync(Action)

Esegue l'oggetto specificato Action in modo asincrono sul thread Dispatcher a cui è associato .

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Esegue l'oggetto specificato Func<TResult> in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato .

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority)

Esegue l'oggetto specificato Func<TResult> in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato .

InvokeAsync<TResult>(Func<TResult>)

Esegue l'oggetto specificato Func<TResult> in modo asincrono sul thread Dispatcher a cui è associato .

InvokeShutdown()

Avvia il processo di arresto del metodo Dispatcher in modo sincrono.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
PushFrame(DispatcherFrame)

Immette un ciclo di esecuzione.

Run()

Esegue il push del frame di esecuzione principale nella coda di eventi di Dispatcher.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
ValidatePriority(DispatcherPriority, String)

Determina se l'oggetto specificato DispatcherPriority è una priorità valida.

VerifyAccess()

Determina se il thread chiamante ha accesso a questo Dispatcheroggetto .

Yield()

Crea un oggetto awaitable che restituisce in modo asincrono il controllo al dispatcher corrente e consente al dispatcher di elaborare altri eventi.

Yield(DispatcherPriority)

Crea un oggetto awaitable che restituisce in modo asincrono il controllo al dispatcher corrente e consente al dispatcher di elaborare altri eventi. Il lavoro che si verifica quando il controllo torna al codice in attesa del risultato di questo metodo viene pianificato con la priorità specificata.

Eventi

Nome Descrizione
ShutdownFinished

Si verifica al termine dell'arresto Dispatcher .

ShutdownStarted

Si verifica quando inizia l'arresto Dispatcher .

UnhandledException

Si verifica quando un'eccezione di thread viene generata e non rilevata durante l'esecuzione di un delegato tramite Invoke o BeginInvoke.

UnhandledExceptionFilter

Si verifica quando un'eccezione di thread viene generata e non rilevata durante l'esecuzione di un delegato tramite Invoke o BeginInvoke quando nella fase di filtro.

Metodi di estensione

Nome Descrizione
BeginInvoke(Dispatcher, Action, DispatcherPriority)

Esegue il delegato specificato in modo asincrono con la priorità specificata nel thread in cui è stato creato l'oggetto specificato Dispatcher .

BeginInvoke(Dispatcher, Action)

Esegue il delegato specificato in modo asincrono con priorità normale sul thread in cui è stato creato l'oggetto specificato Dispatcher .

Invoke(Dispatcher, Action, DispatcherPriority)

Esegue il delegato specificato in modo sincrono con la priorità specificata nel thread in cui è stato creato l'oggetto specificato Dispatcher .

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Esegue il delegato specificato in modo sincrono con la priorità specificata nel thread in cui è stato creato l'oggetto specificato Dispatcher e arresta l'esecuzione dopo il periodo di timeout specificato.

Invoke(Dispatcher, Action, TimeSpan)

Esegue il delegato specificato in modo sincrono sul thread in cui è stato creato l'oggetto specificato Dispatcher e arresta l'esecuzione dopo il periodo di timeout specificato.

Invoke(Dispatcher, Action)

Esegue il delegato specificato in modo sincrono con priorità normale sul thread in cui è stato creato l'oggetto specificato Dispatcher .

Si applica a

Vedi anche