Lenguaje

JoinableTaskFactory.SwitchToMainThreadAsync Método

Definición

Sobrecargas

Nombre Description
SwitchToMainThreadAsync(CancellationToken)

Obtiene un objeto awaitable cuyas continuaciones se ejecutan en el subproceso principal, de forma que se mitiguen los interbloqueos y la reentrada.

SwitchToMainThreadAsync(Boolean, CancellationToken)

Obtiene un objeto awaitable cuyas continuaciones se ejecutan en el contexto de sincronización con el que se inicializó esta instancia, de forma que se mitiguen los interbloqueos y la reentrada.

SwitchToMainThreadAsync(CancellationToken)

Obtiene un objeto awaitable cuyas continuaciones se ejecutan en el subproceso principal, de forma que se mitiguen los interbloqueos y la reentrada.

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

Parámetros

cancellationToken
CancellationToken

Un token cuya cancelación programará inmediatamente la continuación en un subproceso de grupo de subprocesos y hará que la continuación inicie OperationCanceledException, incluso si el autor de la llamada ya está en el subproceso principal.

Devoluciones

Un esperable.

Excepciones

Se devuelve al autor de la llamada en espera si cancellationToken se cancela, incluso si el autor de la llamada ya está en el subproceso principal.

Comentarios

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

Cuando se crea el propietario JoinableTaskContext con , nullSynchronizationContexteste método no tiene ningún efecto y el autor de la llamada continuará la ejecución en su subproceso original.

Se aplica a

SwitchToMainThreadAsync(Boolean, CancellationToken)

Obtiene un objeto awaitable cuyas continuaciones se ejecutan en el contexto de sincronización con el que se inicializó esta instancia, de forma que se mitiguen los interbloqueos y la reentrada.

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

Parámetros

alwaysYield
Boolean

Valor que indica si el autor de la llamada debe producir incluso si ya se está ejecutando en el subproceso principal.

cancellationToken
CancellationToken

Un token cuya cancelación programará inmediatamente la continuación en un subproceso de grupo de subprocesos y hará que la continuación inicie OperationCanceledException, incluso si el autor de la llamada ya está en el subproceso principal.

Devoluciones

Un esperable.

Excepciones

Se devuelve al autor de la llamada en espera si cancellationToken se cancela, incluso si el autor de la llamada ya está en el subproceso principal.

Comentarios

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

Se aplica a