Control.InvokeAsync Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
| Name | Description |
|---|---|
| InvokeAsync(Action, CancellationToken) |
Vyvolá zadaný synchronní zpětné volání asynchronně ve vlákně, které vlastní popisovač ovládacího prvku. |
| InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) |
Spustí zadaný asynchronní zpětné volání ve vlákně, které vlastní popisovač ovládacího prvku asynchronně. |
| InvokeAsync<T>(Func<T>, CancellationToken) |
Vyvolá zadaný synchronní zpětné volání asynchronně ve vlákně, které vlastní popisovač ovládacího prvku. |
| InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken) |
Spustí zadaný asynchronní zpětné volání ve vlákně, které vlastní popisovač ovládacího prvku. |
InvokeAsync(Action, CancellationToken)
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Vyvolá zadaný synchronní zpětné volání asynchronně ve vlákně, které vlastní popisovač ovládacího prvku.
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
Parametry
- callback
- Action
Synchronní akce, která se má provést.
- cancellationToken
- CancellationToken
Token zrušení.
Návraty
Úloha, která představuje asynchronní operaci vyvolání.
Poznámky
Když této metodě předáte CancellationToken metodu, vrátí se metoda, ale zpětné volání bude stále spuštěno. Zpětné volání bude spuštěno ve vlákně uživatelského rozhraní a bude také blokovat vlákno uživatelského rozhraní.
InvokeAsync V tomto případě je pouze zařadí zpětné volání zpět na konec fronty zpráv a vrátí okamžitě, ale jakmile se zpětné volání spustí, bude stále blokovat vlákno uživatelského rozhraní po dobu, kdy je spuštěno. Z tohoto důvodu se doporučuje spouštět pouze krátké operace spuštění synchronizace v zpětném volání, jako je aktualizace vlastnosti ovládacího prvku nebo podobné.
Pokud chcete spustit dlouhotrvající operaci, zvažte místo toho použití asynchronních zpětných volání tím, že se ujistěte, že používáte přetížení InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) nebo InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Platí pro
InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Spustí zadaný asynchronní zpětné volání ve vlákně, které vlastní popisovač ovládacího prvku asynchronně.
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
Parametry
- callback
- Func<CancellationToken,ValueTask>
Asynchronní funkce ke spuštění, která přebírá CancellationToken a vrací .ValueTask
- cancellationToken
- CancellationToken
Token zrušení.
Návraty
Úloha, která představuje asynchronní operaci vyvolání.
Výjimky
Popisovač ovládacího prvku ještě není vytvořen.
Poznámky
Zpětné volání bude zařazováno do vlákna, které vlastní popisovač ovládacího prvku, a pak bude očekáváno. Výjimky se rozšíří zpět do volajícího. Všimněte si také, že vrácený úkol není úkolem přidruženým k zpětnému volání, ale úloha představující operaci zařazování zpětného volání do vlákna uživatelského rozhraní. Pokud potřebujete předat zpětné volání vracející Task místo , ValueTaskpoužijte ValueTask(Task)konstruktor 's vytvořit nový ValueTask , který zabalí původní úkol. Při CancellationToken zařazování zpětného volání do vlákna, které vlastní popisovač ovládacího prvku, a při provádění zpětného volání se zohlední obojí.
Pokud chcete asynchronně spustit synchronní zpětné volání, použijte přetížení InvokeAsync<T>(Func<T>, CancellationToken) nebo přetížení InvokeAsync(Action, CancellationToken).
Platí pro
InvokeAsync<T>(Func<T>, CancellationToken)
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Vyvolá zadaný synchronní zpětné volání asynchronně ve vlákně, které vlastní popisovač ovládacího prvku.
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)
Parametry typu
- T
Návratový typ synchronního zpětného volání.
Parametry
- callback
- Func<T>
Synchronní funkce, která se má provést.
- cancellationToken
- CancellationToken
Token zrušení.
Návraty
Úkol představující operaci a obsahující výsledek funkce.
Poznámky
Když této metodě předáte CancellationToken metodu, vrátí se metoda, ale zpětné volání bude stále spuštěno. Zpětné volání bude spuštěno ve vlákně uživatelského rozhraní a bude také blokovat vlákno uživatelského rozhraní. InvokeAsync v tomto případě pouze zařadí zpětná volání na konec fronty zpráv a vrátí se okamžitě, ale jakmile se zpětné volání spustí, uživatelské rozhraní se zablokuje po dobu, kdy je spuštěný. Z tohoto důvodu se doporučuje spouštět pouze krátké operace spuštění synchronizace v zpětném volání, jako je aktualizace vlastnosti ovládacího prvku nebo podobné.
Pokud chcete spustit dlouhotrvající operaci, zvažte místo toho použití asynchronních zpětných volání, které používáte s přetíženími InvokeAsync popsanými níže.
Důležité: Všimněte si také, že pokud použijete toto přetížení k předání zpětného volání, které vrátí Task , že tento úkol nebude očekáván, ale vrátí okamžitě a má vlastnosti "zapojení a zapomenout". Pokud chcete, aby byl úkol, který předáte, očekávána, ujistěte se, že používáte přetížení InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) nebo InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Platí pro
InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Spustí zadaný asynchronní zpětné volání ve vlákně, které vlastní popisovač ovládacího prvku.
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)
Parametry typu
- T
Návratový typ asynchronního zpětného volání.
Parametry
- callback
- Func<CancellationToken,ValueTask<T>>
Asynchronní funkce ke spuštění, která přebírá CancellationToken a vrací .ValueTask<TResult>
- cancellationToken
- CancellationToken
Token zrušení.
Návraty
Úkol představující operaci a obsahující výsledek funkce typu T.
Výjimky
Popisovač ovládacího prvku ještě není vytvořen.
Poznámky
Zpětné volání bude zařazováno do vlákna, které vlastní popisovač ovládacího prvku, a pak bude očekáváno. Výjimky se rozšíří zpět do volajícího. Všimněte si také, že vrácený úkol není úkolem přidruženým k zpětnému volání, ale úloha představující operaci zařazování zpětného volání do vlákna uživatelského rozhraní. Pokud potřebujete předat zpětné volání vracející Task<TResult> místo , ValueTask<TResult>použijte ValueTask<TResult>(Task<TResult>)konstruktor 's vytvořit nový ValueTask<TResult> , který zabalí původní úkol. Při CancellationToken zařazování zpětného volání do vlákna, které vlastní popisovač ovládacího prvku, a při provádění zpětného volání se zohlední obojí.
Pokud chcete asynchronně spustit synchronní zpětné volání, použijte přetížení InvokeAsync<T>(Func<T>, CancellationToken) nebo přetížení InvokeAsync(Action, CancellationToken).