JoinableTaskContextNode.SuppressRelevance Methode

Definition

Verbirgt jeden JoinableTask, dem der Aufrufer zugeordnet wird, bis der zurückgegebene Wert freigegeben ist.

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

Gibt zurück

JoinableTaskContext.RevertRelevance

Ein Wert, der verworfen wird, um den Einblick in den zugeordneten joinabletask des Aufrufers, sofern vorhanden, wiederherzustellen.

Hinweise

In einigen Fällen kann es vorkommen, dass asynchrone Arbeit innerhalb eines Delegaten, der zur Ausführung von bereitgestellt wird, ausgegeben wird, sodass die Arbeit nicht über Berechtigungen zum erneuten eingeben des Haupt Threads verfügt, bis der Run(Func<Task>) Aufruf zurückgegeben wurde und sich der UI-Thread im Leerlauf befindet. Um zu verhindern, dass die asynchrone Arbeit automatisch erneut in den Haupt Thread eintreten kann, müssen Sie den Code, der die asynchrone Aufgabe aufruft, in einem Using-Block umschließen, indem Sie diese Methode als Ausdruck aufrufen.

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

Gilt für