JoinableTaskFactory.SwitchToMainThreadAsync 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 |
|---|---|
| SwitchToMainThreadAsync(CancellationToken) |
Získá očekávané, jehož pokračování se spouští v hlavním vlákně, takovým způsobem, jak zmírnit vzájemné zablokování a znovu zadat. |
| SwitchToMainThreadAsync(Boolean, CancellationToken) |
Získá awaitable, jehož pokračování se provádí v kontextu synchronizace, se kterým byla tato instance inicializována, takovým způsobem, jak zmírnit vzájemné zablokování a znovu zadat architekturu. |
SwitchToMainThreadAsync(CancellationToken)
Získá očekávané, jehož pokračování se spouští v hlavním vlákně, takovým způsobem, jak zmírnit vzájemné zablokování a znovu zadat.
public Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable SwitchToMainThreadAsync(System.Threading.CancellationToken cancellationToken = default);
member this.SwitchToMainThreadAsync : System.Threading.CancellationToken -> Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable
Public Function SwitchToMainThreadAsync (Optional cancellationToken As CancellationToken = Nothing) As JoinableTaskFactory.MainThreadAwaitable
Parametry
- cancellationToken
- CancellationToken
Token, jehož zrušení okamžitě naplánuje pokračování ve vlákně fondu vláken a způsobí, OperationCanceledExceptionže pokračování vyvolá , i když volající již v hlavním vlákně.
Návraty
Čeká se na to.
Výjimky
Vyvolán zpět na čekající volající, pokud cancellationToken je zrušen, i když volající je již v hlavním vlákně.
Poznámky
private async Task SomeOperationAsync() {
// on the caller's thread.
await DoAsync();
// Now switch to a threadpool thread explicitly.
await TaskScheduler.Default;
// Now switch to the Main thread to talk to some STA object.
await this.JobContext.SwitchToMainThreadAsync();
STAService.DoSomething();
}
Při vytváření vlastnící JoinableTaskContext pomocí nullSynchronizationContext, tato metoda nemá žádný vliv a volající bude pokračovat v provádění v jeho původním vlákně.
Platí pro
SwitchToMainThreadAsync(Boolean, CancellationToken)
Získá awaitable, jehož pokračování se provádí v kontextu synchronizace, se kterým byla tato instance inicializována, takovým způsobem, jak zmírnit vzájemné zablokování a znovu zadat architekturu.
public Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable SwitchToMainThreadAsync(bool alwaysYield, System.Threading.CancellationToken cancellationToken = default);
member this.SwitchToMainThreadAsync : bool * System.Threading.CancellationToken -> Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable
Public Function SwitchToMainThreadAsync (alwaysYield As Boolean, Optional cancellationToken As CancellationToken = Nothing) As JoinableTaskFactory.MainThreadAwaitable
Parametry
- alwaysYield
- Boolean
Hodnota označující, zda má volající přinést, i když již spuštěný v hlavním vlákně.
- cancellationToken
- CancellationToken
Token, jehož zrušení okamžitě naplánuje pokračování ve vlákně fondu vláken a způsobí, OperationCanceledExceptionže pokračování vyvolá , i když volající již v hlavním vlákně.
Návraty
Čeká se na to.
Výjimky
Vyvolán zpět na čekající volající, pokud cancellationToken je zrušen, i když volající je již v hlavním vlákně.
Poznámky
private async Task SomeOperationAsync()
{
// This first part can be on the caller's thread, whatever that is.
DoSomething();
// Now switch to the Main thread to talk to some STA object.
// Supposing it is also important to *not* do this step on our caller's callstack,
// be sure we yield even if we're on the UI thread.
await this.JoinableTaskFactory.SwitchToMainThreadAsync(alwaysYield: true);
STAService.DoSomething();
}