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 in modo asincrono un delegato sul thread al quale Dispatcher è associato.
Overload
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(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(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. |
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. 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.
BeginInvoke è asincrono; pertanto, il controllo restituisce immediatamente all'oggetto chiamante dopo la chiamata.
BeginInvoke restituisce un DispatcherOperation oggetto che può essere utilizzato per interagire con il delegato quando il delegato si trova nella coda degli 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 perché è in sospeso nell'esecuzione nella coda di 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 Dispatcher oggetto che ha chiuso, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
BeginInvoke(Delegate, Object[])
Esegue in modo asincrono il delegato specificato con gli argomenti specificati sul 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
, inserito nella coda di eventi Dispatcher.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null
.
Restituisce
Oggetto, restituito immediatamente dopo la chiamata a BeginInvoke, utilizzabile per l'interazione con il delegato mentre è in attesa di esecuzione nella coda degli 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 perché è in sospeso nell'esecuzione nella coda di 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 la chiamata.
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.
Se BeginInvoke viene chiamato su un Dispatcher oggetto che ha chiuso, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
Si applica a
BeginInvoke(DispatcherPriority, Delegate)
Esegue in modo asincrono il delegato specificato con la priorità specificata sul thread al quale Dispatcher è 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 coda eventi Dispatcher , con cui viene richiamato il metodo specificato.
- method
- Delegate
Delegato a un metodo che non accetta argomenti, inserito nella coda degli eventi di Dispatcher.
Restituisce
Oggetto, restituito immediatamente dopo la chiamata a BeginInvoke, utilizzabile per l'interazione con il delegato mentre è in attesa di esecuzione nella coda degli eventi.
- Attributi
Eccezioni
method
è null
.
priority
non è un oggetto DispatcherPriority valido.
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 . Poiché ogni DispatcherObject ha 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à, 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
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 degli 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 perché è in sospeso nell'esecuzione nella coda di 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 la chiamata.
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.
Se BeginInvoke viene chiamato su un Dispatcher oggetto che ha chiuso, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
Vedi anche
Si applica a
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.
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
, inserito nella coda di eventi Dispatcher.
- priority
- DispatcherPriority
Priorità, rispetto alle altre operazioni in sospeso nella coda eventi Dispatcher , con cui viene richiamato il metodo specificato.
- args
- Object[]
Matrice di oggetti da passare come argomenti al metodo specificato. Può essere null
.
Restituisce
Oggetto, restituito immediatamente dopo la chiamata a BeginInvoke, utilizzabile per l'interazione con il delegato mentre è in attesa di esecuzione nella coda degli 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 perché è in sospeso nell'esecuzione nella coda di 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 la chiamata.
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.
Se BeginInvoke viene chiamato su un Dispatcher oggetto che ha chiuso, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
Si applica a
BeginInvoke(DispatcherPriority, Delegate, Object)
Esegue in modo asincrono il delegato specificato con la priorità e l'argomento specificati sul thread al quale Dispatcher è 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 coda eventi Dispatcher , 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
Oggetto, restituito immediatamente dopo la chiamata a BeginInvoke, utilizzabile per l'interazione con il delegato mentre è in attesa di esecuzione nella coda degli eventi.
- Attributi
Eccezioni
method
è null
.
priority
non è un oggetto DispatcherPriority valido.
Esempio
Nell'esempio seguente viene illustrato come inserire un'operazione in un oggetto Dispatcher.
In primo luogo, 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 ha 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, che viene passato tramite 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 degli 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 perché è in sospeso nell'esecuzione nella coda di 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 la chiamata.
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. 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.
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 Dispatcher oggetto che ha chiuso, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.
Vedi anche
Si applica a
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.
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 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
Oggetto, restituito immediatamente dopo la chiamata a BeginInvoke, utilizzabile per l'interazione con il delegato mentre è in attesa di esecuzione nella coda di Dispatcher.
- 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 degli 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 perché è in sospeso nell'esecuzione nella coda di 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 la chiamata.
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.
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 Dispatcher oggetto che ha chiuso, la proprietà status dell'oggetto restituito viene impostata DispatcherOperation su Aborted.