Control.InvokeAsync Metodo

Definizione

Overload

Nome Descrizione
InvokeAsync(Action, CancellationToken)

Richiama il callback sincrono specificato in modo asincrono sul thread proprietario dell'handle del controllo.

InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)

Esegue il callback asincrono specificato sul thread proprietario dell'handle del controllo in modo asincrono.

InvokeAsync<T>(Func<T>, CancellationToken)

Richiama il callback sincrono specificato in modo asincrono sul thread proprietario dell'handle del controllo.

InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)

Esegue il callback asincrono specificato sul thread proprietario dell'handle del controllo.

InvokeAsync(Action, CancellationToken)

Origine:
Control.cs
Origine:
Control.cs
Origine:
Control.cs

Richiama il callback sincrono specificato in modo asincrono sul thread proprietario dell'handle del controllo.

public System.Threading.Tasks.Task InvokeAsync(Action callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Action * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function InvokeAsync (callback As Action, Optional cancellationToken As CancellationToken = Nothing) As Task

Parametri

callback
Action

Azione sincrona da eseguire.

cancellationToken
CancellationToken

Token di annullamento.

Valori restituiti

Attività che rappresenta l'operazione invoke asincrona.

Commenti

Quando si passa un CancellationToken oggetto a questo metodo, verrà restituito il metodo , ma il callback verrà comunque eseguito. Il callback verrà eseguito nel thread dell'interfaccia utente e bloccarà anche il thread dell'interfaccia utente. InvokeAsync in questo caso si limita a accodare il callback alla fine della coda di messaggi e restituisce immediatamente, ma non appena viene eseguito il callback, bloccherà comunque il thread dell'interfaccia utente per il tempo in cui è in esecuzione. Per questo motivo, è consigliabile eseguire solo brevi operazioni di sincronizzazione nel callback, ad esempio l'aggiornamento della proprietà di un controllo o un'operazione simile.

Se si vuole eseguire un'operazione a esecuzione prolungata, è consigliabile usare invece callback asincroni, assicurandosi di usare l'overload InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) o InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).

Si applica a

InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)

Origine:
Control.cs
Origine:
Control.cs
Origine:
Control.cs

Esegue il callback asincrono specificato sul thread proprietario dell'handle del controllo in modo asincrono.

public System.Threading.Tasks.Task InvokeAsync(Func<System.Threading.CancellationToken,System.Threading.Tasks.ValueTask> callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Func<System.Threading.CancellationToken, System.Threading.Tasks.ValueTask> * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function InvokeAsync (callback As Func(Of CancellationToken, ValueTask), Optional cancellationToken As CancellationToken = Nothing) As Task

Parametri

callback
Func<CancellationToken,ValueTask>

Funzione asincrona da eseguire, che accetta e CancellationToken restituisce un oggetto ValueTask.

cancellationToken
CancellationToken

Token di annullamento.

Valori restituiti

Attività che rappresenta l'operazione invoke asincrona.

Eccezioni

L'handle del controllo non è ancora stato creato.

Commenti

Il callback verrà sottoposto a marshalling al thread proprietario dell'handle del controllo e quindi atteso. Le eccezioni verranno propagate di nuovo al chiamante. Si noti anche che l'attività restituita non è l'attività associata al callback, ma un'attività che rappresenta l'operazione di marshalling del callback al thread dell'interfaccia utente. Se è necessario passare un callback che restituisce un oggetto Task anziché un ValueTaskoggetto , usare il ValueTask(Task)costruttore del per creare un nuovo ValueTask oggetto che esegue il wrapping dell'attività originale. L'oggetto CancellationToken verrà preso in considerazione sia durante il marshalling del callback al thread proprietario dell'handle del controllo che durante l'esecuzione del callback.

Se si vuole eseguire in modo asincrono un callback sincrono, usare l'overload InvokeAsync<T>(Func<T>, CancellationToken) o l'overload InvokeAsync(Action, CancellationToken).

Si applica a

InvokeAsync<T>(Func<T>, CancellationToken)

Origine:
Control.cs
Origine:
Control.cs
Origine:
Control.cs

Richiama il callback sincrono specificato in modo asincrono sul thread proprietario dell'handle del controllo.

public System.Threading.Tasks.Task<T> InvokeAsync<T>(Func<T> callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Func<'T> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>
Public Function InvokeAsync(Of T) (callback As Func(Of T), Optional cancellationToken As CancellationToken = Nothing) As Task(Of T)

Parametri di tipo

T

Tipo restituito del callback sincrono.

Parametri

callback
Func<T>

Funzione sincrona da eseguire.

cancellationToken
CancellationToken

Token di annullamento.

Valori restituiti

Task<T>

Attività che rappresenta l'operazione e che contiene il risultato della funzione.

Commenti

Quando si passa un CancellationToken oggetto a questo metodo, verrà restituito il metodo , ma il callback verrà comunque eseguito. Il callback verrà eseguito nel thread dell'interfaccia utente e bloccarà anche il thread dell'interfaccia utente. InvokeAsync in questo caso sta semplicemente accodando il callback alla fine della coda di messaggi e restituisce immediatamente, ma non appena viene eseguito il callback, bloccherà comunque l'interfaccia utente per il momento in cui è in esecuzione. Per questo motivo, è consigliabile eseguire solo brevi operazioni di sincronizzazione nel callback, ad esempio l'aggiornamento della proprietà di un controllo o un'operazione simile.

Se si vuole eseguire un'operazione a esecuzione prolungata, è consigliabile usare invece callback asincroni, che vengono usati con gli overload descritti di InvokeAsync seguito.

Importante: Si noti anche che se si usa questo overload per passare un callback che restituisce un valore Task che non verrà atteso ma restituito immediatamente e presenta le caratteristiche di un "engagement-and-forget". Se si vuole che l'attività passata venga attesa, assicurarsi di usare l'overload InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) o InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).

Si applica a

InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)

Origine:
Control.cs
Origine:
Control.cs
Origine:
Control.cs

Esegue il callback asincrono specificato sul thread proprietario dell'handle del controllo.

public System.Threading.Tasks.Task<T> InvokeAsync<T>(Func<System.Threading.CancellationToken,System.Threading.Tasks.ValueTask<T>> callback, System.Threading.CancellationToken cancellationToken = default);
member this.InvokeAsync : Func<System.Threading.CancellationToken, System.Threading.Tasks.ValueTask<'T>> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>
Public Function InvokeAsync(Of T) (callback As Func(Of CancellationToken, ValueTask(Of T)), Optional cancellationToken As CancellationToken = Nothing) As Task(Of T)

Parametri di tipo

T

Tipo restituito del callback asincrono.

Parametri

callback
Func<CancellationToken,ValueTask<T>>

Funzione asincrona da eseguire, che accetta e CancellationToken restituisce un oggetto ValueTask<TResult>.

cancellationToken
CancellationToken

Token di annullamento.

Valori restituiti

Task<T>

Attività che rappresenta l'operazione e contenente il risultato della funzione di tipo T.

Eccezioni

L'handle del controllo non è ancora stato creato.

Commenti

Il callback verrà sottoposto a marshalling al thread proprietario dell'handle del controllo e quindi verrà atteso. Le eccezioni verranno propagate di nuovo al chiamante. Si noti anche che l'attività restituita non è l'attività associata al callback, ma un'attività che rappresenta l'operazione di marshalling del callback al thread dell'interfaccia utente. Se è necessario passare un callback che restituisce un oggetto Task<TResult> anziché un ValueTask<TResult>oggetto , usare il ValueTask<TResult>(Task<TResult>)costruttore del per creare un nuovo ValueTask<TResult> oggetto che esegue il wrapping dell'attività originale. L'oggetto CancellationToken verrà preso in considerazione sia durante il marshalling del callback al thread proprietario dell'handle del controllo che durante l'esecuzione del callback.

Se si vuole eseguire in modo asincrono un callback sincrono, usare l'overload InvokeAsync<T>(Func<T>, CancellationToken) o l'overload InvokeAsync(Action, CancellationToken).

Si applica a