Control.InvokeAsync Metoda

Definice

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

Task<T>

Ú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

Task<T>

Ú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).

Platí pro