JoinableTaskFactory.SwitchToMainThreadAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
| Nazwa | Opis |
|---|---|
| SwitchToMainThreadAsync(CancellationToken) |
Dostaje oczekiwany, którego kontynuacje są wykonywane w głównym wątku, w taki sposób, aby ograniczyć zarówno zakleszczenia, jak i ponownego uruchamiania. |
| SwitchToMainThreadAsync(Boolean, CancellationToken) |
Pobiera oczekiwany element, którego kontynuacje są wykonywane w kontekście synchronizacji, z którym zainicjowano to wystąpienie, w taki sposób, aby ograniczyć zarówno zakleszczenia, jak i ponownego uruchomienia. |
SwitchToMainThreadAsync(CancellationToken)
Dostaje oczekiwany, którego kontynuacje są wykonywane w głównym wątku, w taki sposób, aby ograniczyć zarówno zakleszczenia, jak i ponownego uruchamiania.
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, którego anulowanie natychmiast zaplanuje kontynuację wątku w wątku puli wątków i spowoduje zgłoszenie OperationCanceledExceptionkontynuacji , nawet jeśli obiekt wywołujący jest już w wątku głównym.
Zwraca
Oczekiwany.
Wyjątki
W przypadku anulowania wywołania cancellationToken , nawet jeśli obiekt wywołujący jest już w wątku głównym, jest zwracany z powrotem do osoby wywołującej.
Uwagi
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();
}
Po utworzeniu własnego elementu JoinableTaskContext za pomocą nullSynchronizationContextmetody ta metoda nie ma żadnego wpływu, a obiekt wywołujący będzie kontynuować wykonywanie w oryginalnym wątku.
Dotyczy
SwitchToMainThreadAsync(Boolean, CancellationToken)
Pobiera oczekiwany element, którego kontynuacje są wykonywane w kontekście synchronizacji, z którym zainicjowano to wystąpienie, w taki sposób, aby ograniczyć zarówno zakleszczenia, jak i ponownego uruchomienia.
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
Wartość wskazująca, czy obiekt wywołujący powinien zwracać wartość, nawet jeśli jest już wykonywany w wątku głównym.
- cancellationToken
- CancellationToken
Token, którego anulowanie natychmiast zaplanuje kontynuację wątku w wątku puli wątków i spowoduje zgłoszenie OperationCanceledExceptionkontynuacji , nawet jeśli obiekt wywołujący jest już w wątku głównym.
Zwraca
Oczekiwany.
Wyjątki
W przypadku anulowania wywołania cancellationToken , nawet jeśli obiekt wywołujący jest już w wątku głównym, jest zwracany z powrotem do osoby wywołującej.
Uwagi
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();
}