Język

JoinableTaskFactory.SwitchToMainThreadAsync Metoda

Definicja

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();
}

Dotyczy