JoinableTaskContextNode.SuppressRelevance Método

Definição

Oculta qualquer JoinableTask ao qual o chamador esteja associado até que o valor retornado seja Descartado.

public:
 Microsoft::VisualStudio::Threading::JoinableTaskContext::RevertRelevance SuppressRelevance();
public Microsoft.VisualStudio.Threading.JoinableTaskContext.RevertRelevance SuppressRelevance ();
member this.SuppressRelevance : unit -> Microsoft.VisualStudio.Threading.JoinableTaskContext.RevertRelevance
Public Function SuppressRelevance () As JoinableTaskContext.RevertRelevance

Retornos

JoinableTaskContext.RevertRelevance

Um valor a ser Descartado para restaurar a visibilidade no JoinableTask associado do chamador, se houver.

Comentários

Em alguns casos, o trabalho assíncrono pode ser rotacionado dentro de um delegado fornecido para execução, de modo que o trabalho não tenha privilégios para inserir novamente o thread principal até que a Run(Func<Task>) chamada seja retornada e o thread da interface do usuário esteja ocioso. Para impedir que o trabalho assíncrono seja automaticamente autorizado a inserir novamente o thread principal, empacote o código que chama a tarefa assíncrona em um bloco using com uma chamada para esse método como a expressão.

this.JoinableTaskContext.RunSynchronously(async delegate {
    using(this.JoinableTaskContext.SuppressRelevance()) {
        var asyncOperation = Task.Run(async delegate {
            // Some background work.
            await this.JoinableTaskContext.SwitchToMainThreadAsync();
            // Some Main thread work, that cannot begin until the outer RunSynchronously call has returned.
        });
    }

    // Because the asyncOperation is not related to this Main thread work (it was suppressed),
    // the following await *would* deadlock if it were uncommented.
    ////await asyncOperation;
});

Aplica-se a