Warum ist es nicht 100% sicher, Task.Wait() und Task.Result aufzurufen, wenn SynchronizationContext.Current null ist?Kann ich Task.Wait sicher verwenden, wenn SynchronizationContext.Current null ist?
Ich habe einen Multi-Thread aber synchronen Service. Ich ersetze eine der synchronen Methoden durch einen Aufruf von HttpClient.PostAsXmlAsync. Die Implementierung verwendet .Result, um diese in eine synchrone Methode umzuwandeln, um zu vermeiden, dass das gesamte Projekt geändert wird. Wir erhalten jedoch die typischen Deadlock-Probleme, die gut dokumentiert sind.
Ich verstehe nicht, wie es zu einem Deadlock kommen könnte, wenn es keinen Synchronisationskontext gibt.
Vielleicht können Sie zumindest etwas Code posten. Mit Service meinen Sie Windows-Service? – Evk
@Evk - er meint wahrscheinlich einen Webservice – Zegar
Warum verwenden Sie asynchrone Methoden an erster Stelle, wenn Sie nur darauf warten, dass sie fertig sind? Verwenden Sie einfach die inhärent synchronen Methoden von Anfang an, wenn Sie synchrone Operationen ausführen möchten. Es gibt keinen Zweck, ein paar Methoden asynchron zu machen, wenn Sie trotzdem auf sie warten. Entweder das, oder einfach den Service-Handler asynchron machen. – Servy