Dispatcher.BeginInvoke Metodo

Definizione

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

DispatcherOperation

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

DispatcherOperation

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

DispatcherOperation

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

DispatcherOperation

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

DispatcherOperation

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.

Vedi anche

Si applica a