Control.InvokeAsync Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Överlagringar
| Name | Description |
|---|---|
| InvokeAsync(Action, CancellationToken) |
Anropar den angivna synkrona återanropet asynkront på tråden som äger kontrollens handtag. |
| InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) |
Kör det angivna asynkrona återanropet på tråden som äger kontrollens handtag asynkront. |
| InvokeAsync<T>(Func<T>, CancellationToken) |
Anropar den angivna synkrona återanropet asynkront på tråden som äger kontrollens handtag. |
| InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken) |
Kör det angivna asynkrona återanropet på den tråd som äger kontrollens handtag. |
InvokeAsync(Action, CancellationToken)
- Källa:
- Control.cs
- Källa:
- Control.cs
- Källa:
- Control.cs
Anropar den angivna synkrona återanropet asynkront på tråden som äger kontrollens handtag.
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
Parametrar
- callback
- Action
Den synkrona åtgärd som ska köras.
- cancellationToken
- CancellationToken
Annulleringstoken.
Returer
En uppgift som representerar den asynkrona anropande åtgärden.
Kommentarer
När du skickar en CancellationToken till den här metoden returneras metoden, men återanropet körs fortfarande. Återanropet körs i användargränssnittstråden och blockerar även användargränssnittstråden.
InvokeAsync I det här fallet är det bara att köa motringningen till slutet av meddelandekön och returnerar omedelbart, men så snart återanropet körs blockeras fortfarande användargränssnittstråden under den tid den körs. Därför rekommenderar vi att du bara kör åtgärder som körs med kort synkronisering i återanropet, som att uppdatera en kontrolls egenskap eller liknande.
Om du vill köra en tidskrävande åtgärd bör du överväga att använda asynkrona återanrop i stället genom att se till att du använder antingen överlagringen InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) eller InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Gäller för
InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken)
- Källa:
- Control.cs
- Källa:
- Control.cs
- Källa:
- Control.cs
Kör det angivna asynkrona återanropet på tråden som äger kontrollens handtag asynkront.
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
Parametrar
- callback
- Func<CancellationToken,ValueTask>
Den asynkrona funktion som ska köras, som tar en CancellationToken och returnerar en ValueTask.
- cancellationToken
- CancellationToken
Annulleringstoken.
Returer
En uppgift som representerar den asynkrona anropande åtgärden.
Undantag
Kontrollens handtag har ännu inte skapats.
Kommentarer
Återanropet kommer att dirigeras till tråden som äger kontrollens handtag och sedan väntar. Undantag sprids tillbaka till anroparen. Observera också att den returnerade aktiviteten inte är den aktivitet som är associerad med återanropet, utan en uppgift som representerar åtgärden att samla återanropet till användargränssnittstråden. Om du behöver skicka ett återanrop som returnerar en Task i stället för en ValueTaskanvänder du ValueTask(Task)konstruktorn för att skapa en ny ValueTask som omsluter den ursprungliga aktiviteten. CancellationToken Kommer både att beaktas när du kopplar återanropet till tråden som äger kontrollens handtag och när du kör återanropet.
Om du vill köra ett synkront återanrop asynkront använder du överlagringen InvokeAsync<T>(Func<T>, CancellationToken) eller överlagringen InvokeAsync(Action, CancellationToken).
Gäller för
InvokeAsync<T>(Func<T>, CancellationToken)
- Källa:
- Control.cs
- Källa:
- Control.cs
- Källa:
- Control.cs
Anropar den angivna synkrona återanropet asynkront på tråden som äger kontrollens handtag.
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)
Typparametrar
- T
Returtypen för det synkrona återanropet.
Parametrar
- callback
- Func<T>
Den synkrona funktion som ska köras.
- cancellationToken
- CancellationToken
Annulleringstoken.
Returer
En uppgift som representerar åtgärden och som innehåller funktionens resultat.
Kommentarer
När du skickar en CancellationToken till den här metoden returneras metoden, men återanropet körs fortfarande. Återanropet körs i användargränssnittstråden och blockerar även användargränssnittstråden. InvokeAsync i det här fallet köar bara motringningen till slutet av meddelandekön och returnerar omedelbart, men så snart återanropet körs kommer det fortfarande att blockera användargränssnittet för den tid det körs. Därför rekommenderar vi att du bara kör åtgärder som körs med kort synkronisering i återanropet, som att uppdatera en kontrolls egenskap eller liknande.
Om du vill köra en tidskrävande åtgärd bör du överväga att använda asynkrona återanrop i stället, som du använder med överlagringarna i InvokeAsync beskrivningen nedan.
Viktigt: Observera också att om du använder den här överbelastningen för att skicka ett återanrop som returnerar ett Task som den här aktiviteten INTE kommer att vänta utan returneras omedelbart och har egenskaperna för en "engagera och glöm". Om du vill att den uppgift som du skickar ska vänta kontrollerar du att du använder antingen överlagringen InvokeAsync(Func<CancellationToken,ValueTask>, CancellationToken) eller InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken).
Gäller för
InvokeAsync<T>(Func<CancellationToken,ValueTask<T>>, CancellationToken)
- Källa:
- Control.cs
- Källa:
- Control.cs
- Källa:
- Control.cs
Kör det angivna asynkrona återanropet på den tråd som äger kontrollens handtag.
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)
Typparametrar
- T
Returtypen för det asynkrona återanropet.
Parametrar
- callback
- Func<CancellationToken,ValueTask<T>>
Den asynkrona funktion som ska köras, som tar en CancellationToken och returnerar en ValueTask<TResult>.
- cancellationToken
- CancellationToken
Annulleringstoken.
Returer
En uppgift som representerar åtgärden och som innehåller funktionens resultat av typen T.
Undantag
Kontrollens handtag har ännu inte skapats.
Kommentarer
Återanropet kommer att dirigeras till tråden som äger kontrollens handtag och sedan inväntas. Undantag sprids tillbaka till anroparen. Observera också att den returnerade aktiviteten inte är den aktivitet som är associerad med återanropet, utan en uppgift som representerar åtgärden att samla återanropet till användargränssnittstråden. Om du behöver skicka ett återanrop som returnerar en Task<TResult> i stället för en ValueTask<TResult>använder du ValueTask<TResult>(Task<TResult>)konstruktorn för att skapa en ny ValueTask<TResult> som omsluter den ursprungliga aktiviteten. CancellationToken Kommer både att beaktas när du kopplar återanropet till tråden som äger kontrollens handtag och när du kör återanropet.
Om du vill köra ett synkront återanrop asynkront använder du överlagringen InvokeAsync<T>(Func<T>, CancellationToken) eller överlagringen InvokeAsync(Action, CancellationToken).