Warum blockiert es? Ich kenne eine Lösung mit Dispatcher.PushFrame() aber trotzdem. Ist es das Problem eines klassischen Typs "Nicht auf Async-Code blockieren"?Warum wartet dispatcher.Invoke?
UPD: Jetzt wartet es synchron auf den Hauptthread und verwendet threadpool Dispatcher und Still-Blöcke.
static void Main(string[] args)
{
Task.Run(async() => await Test()).Wait();
}
static async Task Test()
{
var disp = Dispatcher.CurrentDispatcher;
var t = Task.Run(() =>
{
disp.Invoke(() =>
{
Console.WriteLine("works");
});
});
await t.ConfigureAwait(false);
}
https://stackoverflow.com/questions/13140523/await-vs-task-wait-deadlock – Legends
'Test() Warten();.' Blockiert nicht 'await' –
seit' Warte() 'wartet nicht auf eine Aufgabe, die auf Hintergrundthread ausgeführt wird. Wenn' 'warten' 'passiert ist, wird der Hauptthread blockiert, und so ist jeder Eintrag blockiert. – John