Dispatcher Classe

Definizione

Fornisce i 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 Applicazione a thread singolo con esempio di calcolo Long-Running.

In primo luogo, 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à, che è impostata su DispatcherPriority.Normale il callback, che viene 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

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

Quando un Dispatcher oggetto 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 Dispatcher oggetto non è associato al thread, verrà creato un oggetto Dispatcher . Viene Dispatcher creato anche un oggetto quando si crea un oggetto DispatcherObject. Se si crea un Dispatcher oggetto in un thread in background, assicurarsi di arrestare il dispatcher prima di uscire dal thread.

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

In WPF è possibile accedere a un DispatcherObject oggetto solo tramite l'oggetto Dispatcher a cui è associato. Ad esempio, un thread in background non può aggiornare il contenuto di un Button oggetto associato a nel Dispatcher thread dell'interfaccia 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. A tale scopo, usare 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 Dispatcher oggetto che ha chiuso, 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à

CurrentDispatcher

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

HasShutdownFinished

Determina se Dispatcher ha terminato l'arresto.

HasShutdownStarted

Determina se Dispatcher si stia arrestando.

Hooks

Ottiene l'insieme di hook che forniscono informazioni aggiuntive sull'evento relativamente a Dispatcher.

Thread

Ottiene il thread al quale Dispatcher è associato.

Metodi

BeginInvoke(Delegate, DispatcherPriority, Object[])

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

BeginInvoke(Delegate, Object[])

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

BeginInvoke(DispatcherPriority, Delegate)

Esegue in modo asincrono il delegato specificato con la priorità specificata sul thread al quale Dispatcher è associato.

BeginInvoke(DispatcherPriority, Delegate, Object)

Esegue in modo asincrono il delegato specificato con la priorità e l'argomento specificati sul thread al quale Dispatcher è associato.

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

Esegue in modo asincrono il delegato specificato con la priorità e la matrice di argomenti specificati sul thread al quale Dispatcher è associato.

BeginInvokeShutdown(DispatcherPriority)

Inizia in modo asincrono l'arresto di Dispatcher.

CheckAccess()

Determina se il thread chiamante è il thread associato a questo oggetto Dispatcher.

DisableProcessing()

Disabilita l'elaborazione della coda di Dispatcher.

Equals(Object)

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

(Ereditato da Object)
ExitAllFrames()

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

FromThread(Thread)

Ottiene Dispatcher per il thread specificato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Invoke(Action)

Esegue in modo sincrono il Action specificato sul thread al quale Dispatcher è associato.

Invoke(Action, DispatcherPriority)

Esegue in modo sincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.

Invoke(Action, DispatcherPriority, CancellationToken)

Esegue in modo sincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Esegue in modo sincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.

Invoke(Delegate, DispatcherPriority, Object[])

Esegue in modo sincrono il delegato specificato con la priorità e gli argomenti specificati sul thread al quale Dispatcher è associato.

Invoke(Delegate, Object[])

Esegue in modo asincrono il delegato specificato con gli argomenti specificati sul thread al quale Dispatcher è associato.

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

Esegue in modo sincrono il delegato specificato entro l'intervallo di tempo designato con la priorità e gli argomenti specificati sul thread al quale Dispatcher è associato.

Invoke(Delegate, TimeSpan, Object[])

Esegue in modo sincrono il delegato specificato entro l'intervallo di tempo designato con la priorità e gli argomenti specificati sul thread al quale Dispatcher è associato.

Invoke(DispatcherPriority, Delegate)

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

Invoke(DispatcherPriority, Delegate, Object)

Esegue in modo sincrono il delegato specificato con la priorità e l'argomento specificati sul thread al quale Dispatcher è associato.

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

Esegue in modo sincrono il delegato specificato con la priorità e gli argomenti specificati sul thread al quale Dispatcher è associato.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Esegue in modo sincrono il delegato specificato con la priorità e il valore di timeout specificati sul thread al quale Dispatcher è associato.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Esegue in modo sincrono il delegato specificato con la priorità e l'argomento specificati sul thread al quale Dispatcher è associato.

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

Esegue in modo sincrono il delegato specificato con la priorità e gli argomenti specificati sul thread al quale Dispatcher è associato.

Invoke<TResult>(Func<TResult>)

Esegue in modo sincrono il Func<TResult> specificato sul thread al quale Dispatcher è associato.

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

Esegue in modo sincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.

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

Esegue in modo sincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.

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

Esegue in modo sincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.

InvokeAsync(Action)

Esegue in modo asincrono il Action specificato sul thread al quale Dispatcher è associato.

InvokeAsync(Action, DispatcherPriority)

Esegue in modo asincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Esegue in modo asincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.

InvokeAsync<TResult>(Func<TResult>)

Esegue in modo asincrono il Func<TResult> specificato sul thread al quale Dispatcher è associato.

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

Esegue in modo asincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.

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

Esegue in modo asincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.

InvokeShutdown()

Inizia il processo di arresto di Dispatcher.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
PushFrame(DispatcherFrame)

Immette un ciclo di esecuzione.

Run()

Inserisce il frame di esecuzione principale nella coda degli eventi di Dispatcher.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
ValidatePriority(DispatcherPriority, String)

Determina se la priorità stabilita dall'oggetto DispatcherPriority specificato sia valida.

VerifyAccess()

Determina se il thread chiamante ha accesso a Dispatcher.

Yield()

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

Yield(DispatcherPriority)

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

Eventi

ShutdownFinished

Si verifica quando Dispatcher termina l'arresto.

ShutdownStarted

Si verifica quando Dispatcher inizia l'arresto.

UnhandledException

Si verifica quando viene generata un'eccezione del thread non intercettata durante l'esecuzione di un delegato mediante Invoke o BeginInvoke.

UnhandledExceptionFilter

Si verifica quando viene generata un'eccezione del thread non intercettata durante l'esecuzione di un delegato mediante Invoke o BeginInvoke in fase di filtro.

Metodi di estensione

BeginInvoke(Dispatcher, Action)

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

BeginInvoke(Dispatcher, Action, DispatcherPriority)

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

Invoke(Dispatcher, Action)

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

Invoke(Dispatcher, Action, TimeSpan)

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

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

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

Invoke(Dispatcher, Action, DispatcherPriority)

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

Si applica a

Vedi anche