Control.InvokeAsync Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Sobrecargas
| Name | Description |
|---|---|
| InvokeAsync(Action, CancellationToken) |
Invoca o callback síncrono especificado de forma assíncrona no thread que detém o handle do controlo. |
| InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) |
Executa o callback assíncrono especificado na thread que detém o handle do controlo de forma assíncrona. |
| InvokeAsync<T>(Func<T>, CancellationToken) |
Invoca o callback síncrono especificado de forma assíncrona no thread que detém o handle do controlo. |
| InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken) |
Executa o callback assíncrono especificado na thread que detém o handle do controlo. |
InvokeAsync(Action, CancellationToken)
- Origem:
- Control.cs
- Origem:
- Control.cs
- Origem:
- Control.cs
Invoca o callback síncrono especificado de forma assíncrona no thread que detém o handle do controlo.
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
Parâmetros
- callback
- Action
A ação síncrona a executar.
- cancellationToken
- CancellationToken
O token de cancelamento.
Devoluções
Uma tarefa que representa a operação de invocação assíncrona.
Observações
Quando passa a CancellationToken para este método, o método retorna, mas o callback continua a ser executado. O callback vai correr no thread da interface e também vai bloquear o thread da interface.
InvokeAsync neste caso, está apenas a enfileirar o callback para o fim da fila de mensagens e retorna imediatamente, mas assim que o callback é executado, continua a bloquear o thread da interface durante o tempo em que está a correr. Por esta razão, recomenda-se executar apenas operações curtas de sincronização no callback, como atualizar a propriedade de um controlo ou similar.
Se quiser executar uma operação de longa duração, considere usar callbacks assíncronos, certificando-se de que utiliza ou a sobrecarga InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) ou InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Aplica-se a
InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)
- Origem:
- Control.cs
- Origem:
- Control.cs
- Origem:
- Control.cs
Executa o callback assíncrono especificado na thread que detém o handle do controlo de forma assíncrona.
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
Parâmetros
- callback
- Func<CancellationToken,ValueTask>
A função assíncrona para executar, que toma um CancellationToken e devolve um ValueTask.
- cancellationToken
- CancellationToken
O token de cancelamento.
Devoluções
Uma tarefa que representa a operação de invocação assíncrona.
Exceções
A alavanca do comando ainda não foi criada.
Observações
O callback será direcionado para o thread que detém o handle do controlo, e depois aguardado. As exceções serão propagadas de volta ao chamador. Note também que a tarefa devolvida não é a tarefa associada ao callback, mas sim uma tarefa que representa a operação de marshalling do callback para o thread da interface. Se precisares de passar um callback que retorna um Task em vez de um ValueTask, usa o ValueTask(Task)construtor 's para criar um novo ValueTask que envolve a tarefa original. Estes CancellationToken serão tidos em conta tanto ao organizar o callback para o thread que detém o handle do controlo, como ao executar o callback.
Se quiser executar de forma assíncrona um callback síncrono, use a sobrecarga InvokeAsync<T>(Func<T>, CancellationToken) ou a sobrecarga InvokeAsync(Action, CancellationToken).
Aplica-se a
InvokeAsync<T>(Func<T>, CancellationToken)
- Origem:
- Control.cs
- Origem:
- Control.cs
- Origem:
- Control.cs
Invoca o callback síncrono especificado de forma assíncrona no thread que detém o handle do controlo.
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)
Parâmetros de Tipo Genérico
- T
O tipo de retorno do callback síncrono.
Parâmetros
- callback
- Func<T>
A função síncrona a executar.
- cancellationToken
- CancellationToken
O token de cancelamento.
Devoluções
Uma tarefa que representa a operação e contém o resultado da função.
Observações
Quando passa a CancellationToken para este método, o método retorna, mas o callback continua a ser executado. O callback vai correr no thread da interface e também vai bloquear o thread da interface. Neste caso, o InvokeAsync está apenas a enfileirar o callback para o fim da fila de mensagens e devolve imediatamente, mas assim que o callback é executado, continua a bloquear a interface durante o tempo em que está a correr. Por esta razão, recomenda-se executar apenas operações curtas de sincronização no callback, como atualizar a propriedade de um controlo ou similar.
Se quiser executar uma operação de longa duração, considere usar callbacks assíncronos, que utiliza com as sobrecargas descritas InvokeAsync abaixo.
Importante: Note também que, se usar esta sobrecarga para passar um callback que devolve, Task esta Tarefa NÃO será aguardada mas retornará imediatamente e tem as características de um "engage-and-forget". Se quiser que a tarefa que passou seja aguardada, certifique-se de usar ou a sobrecarga InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) ou InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Aplica-se a
InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)
- Origem:
- Control.cs
- Origem:
- Control.cs
- Origem:
- Control.cs
Executa o callback assíncrono especificado na thread que detém o handle do controlo.
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)
Parâmetros de Tipo Genérico
- T
O tipo de retorno do callback assíncrono.
Parâmetros
- callback
- Func<CancellationToken,ValueTask<T>>
A função assíncrona para executar, que toma um CancellationToken e devolve um ValueTask<TResult>.
- cancellationToken
- CancellationToken
O token de cancelamento.
Devoluções
Uma tarefa que representa a operação e contém o resultado da função de tipo T.
Exceções
A alavanca do comando ainda não foi criada.
Observações
O callback será direcionado para o thread que detém o handle do controlo, e depois será aguardado. As exceções serão propagadas de volta ao chamador. Note também que a tarefa devolvida não é a tarefa associada ao callback, mas sim uma tarefa que representa a operação de marshalling do callback para o thread da interface. Se precisares de passar um callback que retorna um Task<TResult> em vez de um ValueTask<TResult>, usa o ValueTask<TResult>(Task<TResult>)construtor 's para criar um novo ValueTask<TResult> que envolve a tarefa original. Estes CancellationToken serão tidos em conta tanto ao organizar o callback para o thread que detém o handle do controlo, como ao executar o callback.
Se quiser executar de forma assíncrona um callback síncrono, use a sobrecarga InvokeAsync<T>(Func<T>, CancellationToken) ou a sobrecarga InvokeAsync(Action, CancellationToken).