Dispatcher.BeginInvoke 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 un delegato in modo asincrono sul thread Dispatcher a cui è associato .
Overload
| Nome | Descrizione |
|---|---|
| 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) |
Esegue il delegato specificato in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato. |
| 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(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, 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 . |
Commenti
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. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrono ed BeginInvoke è asincrono. L'operazione viene aggiunta alla coda di eventi di Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo che viene chiamato.
BeginInvoke restituisce un DispatcherOperation oggetto che può essere utilizzato per interagire con il delegato quando il delegato si trova nella coda eventi.
L'oggetto DispatcherOperation restituito da BeginInvoke può essere usato in diversi modi per interagire con il delegato specificato, ad esempio:
Modifica dell'oggetto DispatcherPriority del delegato durante l'esecuzione in sospeso nella coda eventi.
Rimozione del delegato dalla coda di eventi.
In attesa della restituzione del delegato.
Ottenere il valore restituito dal delegato dopo l'esecuzione.
Se vengono effettuate più BeginInvoke chiamate contemporaneamente DispatcherPriority, verranno eseguite nell'ordine in cui sono state effettuate le chiamate.
Se BeginInvoke viene chiamato su un oggetto Dispatcher che ha arrestato, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
BeginInvoke(Delegate, Object[])
Esegue il delegato specificato in modo asincrono con gli argomenti specificati nel thread in cui è stato creato l'oggetto Dispatcher .
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke(Delegate method, params object[] args);
member this.BeginInvoke : Delegate * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, ParamArray args As Object()) As DispatcherOperation
Parametri
- method
- Delegate
Delegato a un metodo che accetta i parametri specificati in args, che viene inserito nella coda di Dispatcher eventi.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null.
Valori restituiti
Oggetto che viene restituito immediatamente dopo BeginInvoke la chiamata, che può essere usato per interagire con il delegato mentre è in sospeso nell'esecuzione nella coda eventi.
Commenti
L'oggetto DispatcherOperation restituito da BeginInvoke può essere usato in diversi modi per interagire con il delegato specificato, ad esempio:
Modifica dell'oggetto DispatcherPriority del delegato durante l'esecuzione in sospeso nella coda eventi.
Rimozione del delegato dalla coda di eventi.
In attesa della restituzione del delegato.
Ottenere il valore restituito dal delegato dopo l'esecuzione.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo che viene chiamato.
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. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrono ed BeginInvoke è asincrono. L'operazione viene aggiunta alla coda di eventi di 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.
Si applica a
BeginInvoke(DispatcherPriority, Delegate)
Esegue il delegato specificato in modo asincrono alla priorità specificata nel thread Dispatcher a cui è associato.
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke(System.Windows.Threading.DispatcherPriority priority, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate) As DispatcherOperation
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 non accetta argomenti, di cui viene eseguito il push nella Dispatcher coda di eventi.
Valori restituiti
Oggetto che viene restituito immediatamente dopo BeginInvoke la chiamata, che può essere usato per interagire con il delegato mentre è in sospeso nell'esecuzione nella coda eventi.
- Attributi
Eccezioni
method è null.
priority non è un DispatcherPriorityvalido.
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 . Poiché ogni DispatcherObject oggetto dispone di una proprietà che restituisce l'oggetto Dispatcher a cui è associato, l'oggetto desiderato viene ottenuto Dispatcher eseguendo una query su DispatcherObject, in questo caso un Button oggetto denominato startStopButton. La 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
Se vengono effettuate più BeginInvoke chiamate contemporaneamente DispatcherPriority, verranno eseguite nell'ordine in cui sono state effettuate le chiamate.
BeginInvoke restituisce un DispatcherOperation oggetto che può essere utilizzato per interagire con il delegato quando il delegato si trova nella coda eventi.
L'oggetto DispatcherOperation restituito da BeginInvoke può essere usato in diversi modi per interagire con il delegato specificato, ad esempio:
Modifica dell'oggetto DispatcherPriority del delegato durante l'esecuzione in sospeso nella coda eventi.
Rimozione del delegato dalla coda di eventi.
In attesa della restituzione del delegato.
Ottenere il valore restituito dal delegato dopo l'esecuzione.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo che viene chiamato.
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. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrono ed BeginInvoke è asincrono. L'operazione viene aggiunta alla coda di eventi di 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.
Vedi anche
Si applica a
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 .
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke(Delegate method, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.BeginInvoke : Delegate * System.Windows.Threading.DispatcherPriority * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, priority As DispatcherPriority, ParamArray args As Object()) As DispatcherOperation
Parametri
- method
- Delegate
Delegato a un metodo che accetta i parametri specificati in args, che viene inserito nella coda di Dispatcher eventi.
- 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.
Valori restituiti
Oggetto che viene restituito immediatamente dopo BeginInvoke la chiamata, che può essere usato per interagire con il delegato mentre è in sospeso nell'esecuzione nella coda eventi.
Commenti
L'oggetto DispatcherOperation restituito da BeginInvoke può essere usato in diversi modi per interagire con il delegato specificato, ad esempio:
Modifica dell'oggetto DispatcherPriority del delegato durante l'esecuzione in sospeso nella coda eventi.
Rimozione del delegato dalla coda di eventi.
In attesa della restituzione del delegato.
Ottenere il valore restituito dal delegato dopo l'esecuzione.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo che viene chiamato.
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. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrono ed BeginInvoke è asincrono. L'operazione viene aggiunta alla coda di eventi di 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.
Si applica a
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.
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke(System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object) As DispatcherOperation
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, di cui viene eseguito il push nella coda di Dispatcher eventi.
- arg
- Object
Oggetto da passare come argomento al metodo specificato.
Valori restituiti
Oggetto che viene restituito immediatamente dopo BeginInvoke la chiamata, che può essere usato per interagire con il delegato mentre è in sospeso nell'esecuzione nella coda eventi.
- Attributi
Eccezioni
method è null.
priority non è un DispatcherPriorityvalido.
Esempio
Nell'esempio seguente viene illustrato come inserire un'operazione in un oggetto Dispatcher.
Prima di tutto, viene creato un delegato che accetta un argomento, in questo caso una stringa.
private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)
BeginInvoke(DispatcherPriority, Delegate, Object) Viene quindi chiamato . Poiché ogni DispatcherObject oggetto dispone di una proprietà che restituisce l'oggetto Dispatcher a cui è associato, l'oggetto desiderato viene ottenuto Dispatcher eseguendo una query su DispatcherObject, in questo caso un Grid oggetto denominato tomorrowsWeather. La chiamata a BeginInvoke(DispatcherPriority, Delegate, Object) accetta tre parametri: la priorità, che è impostata su DispatcherPriority.Normal, il callback, passato attraverso un'istanza del delegato OneArgDelegate, e una stringa denominata weather, che è l'argomento per il callback.
// Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Normal,
new OneArgDelegate(UpdateUserInterface),
weather);
' Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, New OneArgDelegate(AddressOf UpdateUserInterface), weather)
Commenti
arg può essere null se non sono necessari argomenti.
BeginInvoke restituisce un DispatcherOperation oggetto che può essere utilizzato per interagire con il delegato quando il delegato si trova nella coda eventi.
L'oggetto DispatcherOperation restituito da BeginInvoke può essere usato in diversi modi per interagire con il delegato specificato, ad esempio:
Modifica dell'oggetto DispatcherPriority del delegato durante l'esecuzione in sospeso nella coda eventi.
Rimozione del delegato dalla coda di eventi.
In attesa della restituzione del delegato.
Ottenere il valore restituito dal delegato dopo l'esecuzione.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo che viene chiamato.
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à del contenuto 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 di eventi di Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Se vengono effettuate più BeginInvoke chiamate contemporaneamente DispatcherPriority, verranno eseguite nell'ordine in cui sono state effettuate le chiamate.
Se BeginInvoke viene chiamato su un oggetto Dispatcher che ha arrestato, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
Vedi anche
Si applica a
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 .
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke(System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object, ParamArray args As Object()) As DispatcherOperation
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 più argomenti, di cui viene eseguito il push nella coda di Dispatcher eventi.
- arg
- Object
Oggetto da passare come argomento al metodo specificato.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato.
Valori restituiti
Oggetto che viene restituito immediatamente dopo BeginInvoke la chiamata, che può essere usato per interagire con il delegato in quanto è in sospeso nell'esecuzione nella Dispatcher coda.
- Attributi
Eccezioni
method è null.
DispatcherPriority non è una priorità valida.
Commenti
Il arg parametro può essere null se non sono necessari argomenti.
BeginInvoke restituisce un DispatcherOperation oggetto che può essere utilizzato per interagire con il delegato quando il delegato si trova nella coda eventi.
L'oggetto DispatcherOperation restituito da BeginInvoke può essere usato in diversi modi per interagire con il delegato specificato, ad esempio:
Modifica dell'oggetto DispatcherPriority del delegato durante l'esecuzione in sospeso nella coda eventi.
Rimozione del delegato dalla coda di eventi.
In attesa della restituzione del delegato.
Ottenere il valore restituito dal delegato dopo l'esecuzione.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo che viene chiamato.
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. Questa operazione viene eseguita usando Invoke o BeginInvoke. Invoke è sincrono ed BeginInvoke è asincrono. L'operazione viene aggiunta alla coda di eventi di Dispatcher in corrispondenza dell'oggetto specificato DispatcherPriority.
Se vengono effettuate più BeginInvoke chiamate contemporaneamente DispatcherPriority, verranno eseguite nell'ordine in cui sono state effettuate le chiamate.
Se BeginInvoke viene chiamato su un oggetto Dispatcher che ha arrestato, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.