JoinableTaskContextNode.SuppressRelevance Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Скрывает все задачи JoinableTask, с которыми связан вызывающий объект, до тех пор, пока не будет удалено возвращаемое значение.
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
Возвращаемое значение
Значение, которое необходимо удалить, чтобы восстановить видимость в связанном JoinableTask вызывающей стороне, если таковая имеется.
Комментарии
В некоторых случаях Асинхронная работа может быть отключена внутри делегата, предоставленного для выполнения, поэтому работа не имеет привилегий для повторного ввода основного потока до тех пор, пока не Run(Func<Task>) будет возвращен вызов и поток пользовательского интерфейса бездействует. Чтобы асинхронная работа не позволяла автоматически повторно ввести основной поток, заключите код, вызывающий асинхронную задачу, в блок using с вызовом этого метода в качестве выражения.
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;
});