JoinableTaskFactory.SwitchToMainThreadAsync Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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();
}