Wenn Sie wait
auf dem concurrency::task
aufrufen, nachdem Sie es erstellt haben, wird der Punkt, an dem Aufgaben an erster Stelle stehen, komplett aufgehoben.
Sie müssen wissen, dass es in der Windows-Laufzeit viele asynchrone Operationen gibt, die nicht auf dem UI-Thread ausgeführt werden können (oder sollten). Du hast einen von ihnen gefunden, und jetzt versuchst du darauf zu warten. Anstatt einen Deadlock zu verursachen, erhalten Sie eine Ausnahme.
Um dies zu beheben, müssen Sie eine Fortsetzung verwenden. Du bist am meisten da. Sie definieren bereits eine Fortsetzungsfunktion:
%Vor% ... aber du benutzt es nicht. Der Zweck der Funktion, die Sie in then
übergeben, ist aus dem UI-Thread , sobald die Aufgabe abgeschlossen ist. Stattdessen sollten Sie Folgendes tun:
Ihr wichtiger Post-Reload-Code wird erst ausgeführt, wenn die Aufgabe abgeschlossen ist, und er wird in einem Hintergrund-Thread ausgeführt, damit die Benutzeroberfläche nicht blockiert oder blockiert wird.