Control.InvokeAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| InvokeAsync(Action, CancellationToken) |
Вызывает указанный синхронный обратный вызов асинхронно в потоке, который владеет дескриптором элемента управления. |
| InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) |
Выполняет указанный асинхронный обратный вызов в потоке, который владеет дескриптором элемента управления асинхронно. |
| InvokeAsync<T>(Func<T>, CancellationToken) |
Вызывает указанный синхронный обратный вызов асинхронно в потоке, который владеет дескриптором элемента управления. |
| InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken) |
Выполняет указанный асинхронный обратный вызов в потоке, которому принадлежит дескриптор элемента управления. |
InvokeAsync(Action, CancellationToken)
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
Вызывает указанный синхронный обратный вызов асинхронно в потоке, который владеет дескриптором элемента управления.
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
Параметры
- callback
- Action
Синхронное действие для выполнения.
- cancellationToken
- CancellationToken
Маркер отмены.
Возвращаемое значение
Задача, представляющая асинхронную операцию вызова.
Комментарии
При передаче в этот метод метод возвращается, но обратный CancellationToken вызов по-прежнему будет выполнен. Обратный вызов будет выполняться в потоке пользовательского интерфейса и также блокирует поток пользовательского интерфейса.
InvokeAsync В этом случае выполняется только очередь обратного вызова к концу очереди сообщений и немедленно возвращается, но как только обратный вызов будет выполнен, он по-прежнему блокирует поток пользовательского интерфейса в течение времени его выполнения. По этой причине рекомендуется выполнять только короткие операции синхронизации, выполняемые в обратном вызове, например обновление свойства элемента управления или аналогичное.
Если вы хотите выполнить длительную операцию, попробуйте использовать асинхронные обратные вызовы, убедившись, что вы используете перегрузку InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) или InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Применяется к
InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
Выполняет указанный асинхронный обратный вызов в потоке, который владеет дескриптором элемента управления асинхронно.
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
Параметры
- callback
- Func<CancellationToken,ValueTask>
Асинхронная функция для выполнения, которая принимает CancellationToken и возвращает .ValueTask
- cancellationToken
- CancellationToken
Маркер отмены.
Возвращаемое значение
Задача, представляющая асинхронную операцию вызова.
Исключения
Дескриптор элемента управления еще не создан.
Комментарии
Обратный вызов будет маршалирован в поток, который владеет дескриптором элемента управления, а затем ожидается. Исключения будут распространяться обратно вызывающей стороне. Кроме того, обратите внимание, что возвращаемая задача не связана с обратным вызовом, а задача, представляющая операцию маршаллинга обратного вызова в поток пользовательского интерфейса. Если необходимо передать обратный вызов, возвращающий вместо не a TaskValueTask, используйте конструктор с помощью ValueTask(Task)конструктора, чтобы создать новый ValueTask объект, который упаковывает исходную задачу. При CancellationToken маршаллинге обратного вызова в поток, которому принадлежит дескриптор элемента управления, и при выполнении обратного вызова будут учитываться оба метода.
Если вы хотите асинхронно выполнить синхронный обратный вызов, используйте перегрузку InvokeAsync<T>(Func<T>, CancellationToken) или перегрузку InvokeAsync(Action, CancellationToken).
Применяется к
InvokeAsync<T>(Func<T>, CancellationToken)
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
Вызывает указанный синхронный обратный вызов асинхронно в потоке, который владеет дескриптором элемента управления.
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)
Параметры типа
- T
Возвращаемый тип синхронного обратного вызова.
Параметры
- callback
- Func<T>
Синхронная функция для выполнения.
- cancellationToken
- CancellationToken
Маркер отмены.
Возвращаемое значение
Задача, представляющая операцию и содержащую результат функции.
Комментарии
При передаче в этот метод метод возвращается, но обратный CancellationToken вызов по-прежнему будет выполнен. Обратный вызов будет выполняться в потоке пользовательского интерфейса и также блокирует поток пользовательского интерфейса. InvokeAsync в этом случае просто помещает обратный вызов в конец очереди сообщений и возвращается немедленно, но как только обратный вызов выполняется, он по-прежнему блокирует пользовательский интерфейс во время его выполнения. По этой причине рекомендуется выполнять только короткие операции синхронизации, выполняемые в обратном вызове, например обновление свойства элемента управления или аналогичное.
Если вы хотите выполнить длительную операцию, попробуйте использовать асинхронные обратные вызовы, которые используются с перегрузками, описанными InvokeAsync ниже.
Важно: Кроме того, обратите внимание, что если вы используете эту перегрузку для передачи обратного вызова, возвращающего Task то, что эта задача не будет ожидаться, но возвращается немедленно и имеет характеристики "задействования и забыть". Если вы хотите, чтобы задача, которую вы передаете, ожидалась, убедитесь, что вы используете перегрузку InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) или InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Применяется к
InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
- Исходный код:
- Control.cs
Выполняет указанный асинхронный обратный вызов в потоке, которому принадлежит дескриптор элемента управления.
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)
Параметры типа
- T
Тип возврата асинхронного обратного вызова.
Параметры
- callback
- Func<CancellationToken,ValueTask<T>>
Асинхронная функция для выполнения, которая принимает CancellationToken и возвращает .ValueTask<TResult>
- cancellationToken
- CancellationToken
Маркер отмены.
Возвращаемое значение
Задача, представляющая операцию и содержащую результат функции типа T.
Исключения
Дескриптор элемента управления еще не создан.
Комментарии
Обратный вызов будет маршалирован в поток, который владеет дескриптором элемента управления, а затем ожидается. Исключения будут распространяться обратно вызывающей стороне. Кроме того, обратите внимание, что возвращаемая задача не связана с обратным вызовом, а задача, представляющая операцию маршаллинга обратного вызова в поток пользовательского интерфейса. Если необходимо передать обратный вызов, возвращающий вместо не a Task<TResult>ValueTask<TResult>, используйте конструктор с помощью ValueTask<TResult>(Task<TResult>)конструктора, чтобы создать новый ValueTask<TResult> объект, который упаковывает исходную задачу. При CancellationToken маршаллинге обратного вызова в поток, которому принадлежит дескриптор элемента управления, и при выполнении обратного вызова будут учитываться оба метода.
Если вы хотите асинхронно выполнить синхронный обратный вызов, используйте перегрузку InvokeAsync<T>(Func<T>, CancellationToken) или перегрузку InvokeAsync(Action, CancellationToken).