JoinableTaskContextNode.SuppressRelevance Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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;
});