Dispatcher.Invoke Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Esegue in modo sincrono il delegato specificato sul thread al quale Dispatcher è associato.
Overload
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(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, Delegate, Object, Object[]) |
Esegue in modo sincrono il delegato specificato con la priorità e gli argomenti specificati 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(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, Delegate, Object) |
Esegue in modo sincrono il delegato specificato con la priorità e l'argomento 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(Action, DispatcherPriority, CancellationToken) |
Esegue in modo sincrono il Action specificato con la priorità specificata 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(Delegate, Object[]) |
Esegue in modo asincrono il delegato specificato con gli argomenti specificati 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) |
Esegue in modo sincrono il Action specificato 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<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. |
Esempio
Nell'esempio seguente un delegato viene inserito in un Dispatcher oggetto in utilizzando NormalInvoke.
// Places the delegate onto the UI Thread's Dispatcher
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
// Place delegate on the Dispatcher.
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new TimerDispatcherDelegate(TimerWorkItem));
}
' Places the delegate onto the UI Thread's Dispatcher
Private Sub timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
' Place delegate on the Dispatcher.
Me.Dispatcher.Invoke(DispatcherPriority.Normal, New TimerDispatcherDelegate(AddressOf TimerWorkItem))
End Sub
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
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.
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, TimeSpan timeout, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, TimeSpan timeout, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * TimeSpan * Delegate * obj * obj[] -> obj
Public Function Invoke (priority As DispatcherPriority, timeout As TimeSpan, method As Delegate, arg As Object, ParamArray args As Object()) As Object
Parametri
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella coda eventi Dispatcher , con cui viene richiamato il metodo specificato.
- timeout
- TimeSpan
Quantità massima di tempo di attesa per l'avvio dell'operazione. Dopo l'avvio dell'operazione, l'operazione verrà completata prima della restituzione di questo metodo. Per specificare un'attesa infinita, usare il valore -1. In una chiamata allo stesso thread qualsiasi altro valore negativo viene convertito in -1, con conseguente attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un'eccezione ArgumentOutOfRangeException.
- method
- Delegate
Delegato a un metodo che accetta più argomenti, inserito nella coda degli eventi di Dispatcher.
- arg
- Object
Oggetto da passare come argomento al metodo specificato.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
- Attributi
Eccezioni
priority
è uguale a Inactive.
priority
non è un oggetto DispatcherPriority valido.
method
è null
.
timeout
è un numero negativo diverso da -1 e questo metodo è stato richiamato tra thread.
Commenti
arg
può essere null
se non è necessario un argomento.
In WPF solo il thread che ha creato un DispatcherObject oggetto può accedere a tale oggetto. Ad esempio, un thread in background che viene disattivato dal thread principale dell'interfaccia utente non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content 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 eventi di in Dispatcher corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non tornerà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
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.
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, TimeSpan timeout, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, TimeSpan timeout, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * TimeSpan * Delegate * obj -> obj
Public Function Invoke (priority As DispatcherPriority, timeout As TimeSpan, method As Delegate, arg As Object) As Object
Parametri
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella coda eventi Dispatcher , con cui viene richiamato il metodo specificato.
- timeout
- TimeSpan
Quantità massima di tempo di attesa per l'avvio dell'operazione. Dopo l'avvio dell'operazione, l'operazione verrà completata prima della restituzione di questo metodo. Per specificare un'attesa infinita, usare il valore -1. In una chiamata allo stesso thread qualsiasi altro valore negativo viene convertito in -1, con conseguente attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un'eccezione ArgumentOutOfRangeException.
- method
- Delegate
Delegato a un metodo che accetta più argomenti, inserito nella coda degli eventi di Dispatcher.
- arg
- Object
Oggetto da passare come argomento al metodo specificato. Se non sono richiesti argomenti, può corrispondere a null
.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
- Attributi
Eccezioni
priority
è uguale a Inactive.
priority
non è una priorità valida.
method
è null
.
Commenti
arg
può essere null
se non è necessario un argomento
In WPF solo il thread che ha creato un DispatcherObject oggetto può accedere a tale oggetto. Ad esempio, un thread in background che viene disattivato dal thread principale dell'interfaccia utente non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content 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 eventi di in Dispatcher corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non tornerà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
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.
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * Delegate * obj * obj[] -> obj
Public Function Invoke (priority As DispatcherPriority, method As Delegate, arg As Object, ParamArray args As Object()) As Object
Parametri
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella coda eventi Dispatcher , con cui viene richiamato il metodo specificato.
- method
- Delegate
Delegato a un metodo che accetta più argomenti, inserito nella coda degli eventi di Dispatcher.
- arg
- Object
Oggetto da passare come argomento al metodo specificato.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
- Attributi
Eccezioni
priority
è uguale a Inactive.
priority
non è una priorità valida.
method
è null
.
Commenti
arg
può essere null
se non è necessario un argomento
In WPF solo il thread che ha creato un DispatcherObject oggetto può accedere a tale oggetto. Ad esempio, un thread in background che viene disattivato dal thread principale dell'interfaccia utente non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content 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 eventi di in Dispatcher corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)
Esegue in modo sincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.
public:
void Invoke(Action ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken, TimeSpan timeout);
public void Invoke (Action callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken, TimeSpan timeout);
member this.Invoke : Action * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken * TimeSpan -> unit
Public Sub Invoke (callback As Action, priority As DispatcherPriority, cancellationToken As CancellationToken, timeout As TimeSpan)
Parametri
- callback
- Action
Delegato azione da richiamare tramite il dispatcher.
- priority
- DispatcherPriority
Priorità che determina l'ordine in cui viene richiamato il callback specificato rispetto alle altre operazioni in sospeso in Dispatcher.
- cancellationToken
- CancellationToken
Oggetto che indica se annullare l'azione.
- timeout
- TimeSpan
Tempo massimo di attesa per l'avvio dell'operazione. Dopo l'avvio dell'operazione, verrà completato prima che questo metodo venga restituito. Per specificare un'attesa infinita, usare un valore pari a -1. In una chiamata allo stesso thread, qualsiasi altro valore negativo viene convertito in -1, causando un'attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un ArgumentOutOfRangeExceptionoggetto .
Eccezioni
callback
è null
.
timeout
è un numero negativo diverso da -1 e questo metodo è stato richiamato tra i thread.
priority
non è una priorità valida.
Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.
Si applica a
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.
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, TimeSpan timeout, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, TimeSpan timeout, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * TimeSpan * Delegate -> obj
Public Function Invoke (priority As DispatcherPriority, timeout As TimeSpan, method As Delegate) As Object
Parametri
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella Dispatcher coda eventi, con cui viene richiamato il metodo specificato.
- timeout
- TimeSpan
Tempo massimo di attesa per l'avvio dell'operazione. Dopo l'avvio dell'operazione, verrà completato prima che questo metodo venga restituito. Per specificare un'attesa infinita, usare un valore pari a -1. In una chiamata allo stesso thread, qualsiasi altro valore negativo viene convertito in -1, causando un'attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un ArgumentOutOfRangeExceptionoggetto .
- method
- Delegate
Delegato a un metodo che non accetta argomenti, inserito nella coda degli eventi di Dispatcher.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
- Attributi
Eccezioni
method
è null
.
timeout
è un numero negativo diverso da -1 e questo metodo è stato richiamato tra i thread.
priority
è uguale a Inactive.
priority
non è una priorità valida.
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
Invoke(DispatcherPriority, Delegate, Object)
Esegue in modo sincrono il delegato specificato con la priorità e l'argomento specificati sul thread al quale Dispatcher è associato.
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * Delegate * obj -> obj
Public Function Invoke (priority As DispatcherPriority, method As Delegate, arg As Object) As Object
Parametri
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella Dispatcher coda eventi, con cui viene richiamato il metodo specificato.
- method
- Delegate
Delegato a un metodo che accetta un argomento, inserito nella coda degli eventi di Dispatcher.
- arg
- Object
Oggetto da passare come argomento al metodo specificato.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
- Attributi
Eccezioni
priority
è uguale a Inactive.
priority
non è una priorità valida.
method
è null
.
Commenti
arg
può essere null
se un argomento non è necessario
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
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.
public:
System::Object ^ Invoke(Delegate ^ method, TimeSpan timeout, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, TimeSpan timeout, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.Invoke : Delegate * TimeSpan * System.Windows.Threading.DispatcherPriority * obj[] -> obj
Public Function Invoke (method As Delegate, timeout As TimeSpan, priority As DispatcherPriority, ParamArray args As Object()) As Object
Parametri
- method
- Delegate
Delegato a un metodo che accetta i parametri specificati in args
, inserito nella coda di eventi Dispatcher.
- timeout
- TimeSpan
Tempo massimo di attesa per l'avvio dell'operazione. Dopo l'avvio dell'operazione, verrà completato prima che questo metodo venga restituito. Per specificare un'attesa infinita, usare un valore pari a -1. In una chiamata allo stesso thread, qualsiasi altro valore negativo viene convertito in -1, causando un'attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un ArgumentOutOfRangeExceptionoggetto .
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella Dispatcher coda eventi, con cui viene richiamato il metodo specificato.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null
.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
Eccezioni
method
è null
.
timeout
è un numero negativo diverso da -1 e questo metodo è stato richiamato tra i thread.
priority
è uguale a Inactive.
priority
non è una priorità valida.
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
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.
public:
System::Object ^ Invoke(Delegate ^ method, TimeSpan timeout, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, TimeSpan timeout, params object[] args);
member this.Invoke : Delegate * TimeSpan * obj[] -> obj
Public Function Invoke (method As Delegate, timeout As TimeSpan, ParamArray args As Object()) As Object
Parametri
- method
- Delegate
Delegato a un metodo che accetta i parametri specificati in args
, inserito nella coda di eventi Dispatcher.
- timeout
- TimeSpan
Tempo massimo di attesa per l'avvio dell'operazione. Tuttavia, una volta avviata l'operazione, verrà completata prima che questo metodo venga restituito. Per specificare un'attesa infinita, usare un valore pari a -1. In una chiamata allo stesso thread, qualsiasi altro valore negativo viene convertito in -1, causando un'attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un ArgumentOutOfRangeExceptionoggetto .
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null
se non sono necessari argomenti.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
Eccezioni
method
è null
.
timeout
è un numero negativo diverso da -1 e si richiama tra i thread.
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
Invoke(Action, DispatcherPriority, CancellationToken)
Esegue in modo sincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.
public:
void Invoke(Action ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken);
public void Invoke (Action callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken);
member this.Invoke : Action * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken -> unit
Public Sub Invoke (callback As Action, priority As DispatcherPriority, cancellationToken As CancellationToken)
Parametri
- callback
- Action
Un delegato da richiamare tramite il dispatcher.
- priority
- DispatcherPriority
Priorità che determina l'ordine in cui viene richiamato il callback specificato rispetto alle altre operazioni in sospeso in Dispatcher.
- cancellationToken
- CancellationToken
Oggetto che indica se annullare l'azione.
Eccezioni
Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.
Si applica a
Invoke(DispatcherPriority, Delegate)
Esegue il delegato specificato in modo sincrono alla priorità specificata nel thread Dispatcher associato.
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * Delegate -> obj
Public Function Invoke (priority As DispatcherPriority, method As Delegate) As Object
Parametri
- priority
- DispatcherPriority
Priorità con cui viene richiamato il metodo specificato, rispetto alle altre operazioni in sospeso nella Dispatcher coda eventi.
- method
- Delegate
Delegato a un metodo che non accetta argomenti, inserito nella coda degli eventi di Dispatcher.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
- Attributi
Eccezioni
priority
è uguale a Inactive.
priority
non è una priorità valida.
method
è null
.
Esempio
Nell'esempio seguente viene inserito un delegato in un Dispatcher oggetto Normal usando Invoke.
// Places the delegate onto the UI Thread's Dispatcher
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
// Place delegate on the Dispatcher.
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new TimerDispatcherDelegate(TimerWorkItem));
}
' Places the delegate onto the UI Thread's Dispatcher
Private Sub timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
' Place delegate on the Dispatcher.
Me.Dispatcher.Invoke(DispatcherPriority.Normal, New TimerDispatcherDelegate(AddressOf TimerWorkItem))
End Sub
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
Invoke(Delegate, Object[])
Esegue in modo asincrono il delegato specificato con gli argomenti specificati sul thread al quale Dispatcher è associato.
public:
System::Object ^ Invoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, params object[] args);
member this.Invoke : Delegate * obj[] -> obj
Public Function Invoke (method As Delegate, ParamArray args As Object()) As Object
Parametri
- method
- Delegate
Delegato a un metodo che accetta i parametri specificati in args
, inserito nella coda di eventi Dispatcher.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null
.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
Invoke(Action, DispatcherPriority)
Esegue in modo sincrono il Action specificato con la priorità specificata sul thread al quale Dispatcher è associato.
public:
void Invoke(Action ^ callback, System::Windows::Threading::DispatcherPriority priority);
public void Invoke (Action callback, System.Windows.Threading.DispatcherPriority priority);
member this.Invoke : Action * System.Windows.Threading.DispatcherPriority -> unit
Public Sub Invoke (callback As Action, priority As DispatcherPriority)
Parametri
- callback
- Action
Un delegato da richiamare tramite il dispatcher.
- priority
- DispatcherPriority
Priorità che determina l'ordine in cui viene richiamato il callback specificato rispetto alle altre operazioni in sospeso in Dispatcher.
Si applica a
Invoke(Action)
Esegue in modo sincrono il Action specificato sul thread al quale Dispatcher è associato.
public:
void Invoke(Action ^ callback);
public void Invoke (Action callback);
member this.Invoke : Action -> unit
Public Sub Invoke (callback As Action)
Parametri
- callback
- Action
Un delegato da richiamare tramite il dispatcher.
Commenti
La priorità predefinita è DispatcherPriority.Send
.
Si applica a
Invoke(Delegate, DispatcherPriority, Object[])
Esegue in modo sincrono il delegato specificato con la priorità e gli argomenti specificati sul thread al quale Dispatcher è associato.
public:
System::Object ^ Invoke(Delegate ^ method, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.Invoke : Delegate * System.Windows.Threading.DispatcherPriority * obj[] -> obj
Public Function Invoke (method As Delegate, priority As DispatcherPriority, ParamArray args As Object()) As Object
Parametri
- method
- Delegate
Delegato a un metodo che accetta i parametri specificati in args
, inserito nella coda di eventi Dispatcher.
- priority
- DispatcherPriority
Priorità con cui viene richiamato il metodo specificato, rispetto alle altre operazioni in sospeso nella Dispatcher coda eventi.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null
.
Restituisce
Valore restituito dal delegato richiamato oppure null
se il delegato non restituisce alcun valore.
Commenti
In WPF solo il thread creato DispatcherObject può accedere a tale oggetto. Ad esempio, un thread in background che viene interrotto dal thread dell'interfaccia utente principale non può aggiornare il contenuto di un Button oggetto creato nel thread dell'interfaccia utente. Per consentire al thread in background di accedere alla proprietà Content dell'oggetto Button, il thread in background deve delegare il lavoro al Dispatcher thread dell'interfaccia utente associato. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrona ed BeginInvoke è asincrona. L'operazione viene aggiunta alla coda di eventi dell'oggetto Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Invoke è un'operazione sincrona; pertanto, il controllo non restituirà all'oggetto chiamante fino a quando non viene restituito il callback.
Si applica a
Invoke<TResult>(Func<TResult>)
Esegue in modo sincrono il Func<TResult> specificato sul thread al quale Dispatcher è associato.
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback);
public TResult Invoke<TResult> (Func<TResult> callback);
member this.Invoke : Func<'Result> -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult)) As TResult
Parametri di tipo
- TResult
Il tipo del valore restituito del delegato specificato.
Parametri
- callback
- Func<TResult>
Un delegato da richiamare tramite il dispatcher.
Restituisce
Valore restituito da callback
.
Si applica a
Invoke<TResult>(Func<TResult>, DispatcherPriority)
Esegue in modo sincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback, System::Windows::Threading::DispatcherPriority priority);
public TResult Invoke<TResult> (Func<TResult> callback, System.Windows.Threading.DispatcherPriority priority);
member this.Invoke : Func<'Result> * System.Windows.Threading.DispatcherPriority -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult), priority As DispatcherPriority) As TResult
Parametri di tipo
- TResult
Il tipo del valore restituito del delegato specificato.
Parametri
- callback
- Func<TResult>
Un delegato da richiamare tramite il dispatcher.
- priority
- DispatcherPriority
Priorità che determina l'ordine in cui viene richiamato il callback specificato rispetto alle altre operazioni in sospeso in Dispatcher.
Restituisce
Valore restituito da callback
.
Si applica a
Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)
Esegue in modo sincrono il Func<TResult> specificato con la priorità specificata sul thread al quale Dispatcher è associato.
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken);
public TResult Invoke<TResult> (Func<TResult> callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken);
member this.Invoke : Func<'Result> * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult), priority As DispatcherPriority, cancellationToken As CancellationToken) As TResult
Parametri di tipo
- TResult
Il tipo del valore restituito del delegato specificato.
Parametri
- callback
- Func<TResult>
Un delegato da richiamare tramite il dispatcher.
- priority
- DispatcherPriority
Priorità che determina l'ordine in cui viene richiamato il callback specificato rispetto alle altre operazioni in sospeso in Dispatcher.
- cancellationToken
- CancellationToken
Oggetto che indica se annullare l'operazione.
Restituisce
Valore restituito da callback
.
Eccezioni
Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.
Si applica a
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.
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken, TimeSpan timeout);
public TResult Invoke<TResult> (Func<TResult> callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken, TimeSpan timeout);
member this.Invoke : Func<'Result> * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken * TimeSpan -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult), priority As DispatcherPriority, cancellationToken As CancellationToken, timeout As TimeSpan) As TResult
Parametri di tipo
- TResult
Il tipo del valore restituito del delegato specificato.
Parametri
- callback
- Func<TResult>
Un delegato da richiamare tramite il dispatcher.
- priority
- DispatcherPriority
Priorità che determina l'ordine in cui viene richiamato il callback specificato rispetto alle altre operazioni in sospeso in Dispatcher.
- cancellationToken
- CancellationToken
Oggetto che indica se annullare l'operazione.
- timeout
- TimeSpan
Tempo massimo di attesa per l'avvio dell'operazione. Dopo l'avvio dell'operazione, verrà completato prima che questo metodo venga restituito. Per specificare un'attesa infinita, usare un valore pari a -1. In una chiamata allo stesso thread, qualsiasi altro valore negativo viene convertito in -1, causando un'attesa infinita. In una chiamata tra thread qualsiasi altro valore negativo genera un ArgumentOutOfRangeExceptionoggetto .
Restituisce
Valore restituito da callback
.
Eccezioni
callback
è null
.
timeout
è un numero negativo diverso da -1 e il metodo è stato richiamato tra i thread.
priority
non è una priorità valida.
Il token di annullamento è stato annullato. Questa eccezione viene archiviata nell'attività restituita.