Was passiert beim Warten auf das Ergebnis einer Aufgabe?

Ich verwende den HttpClient, um Daten an einen Remotedienst in einem .NET 4.0-Projekt zu senden. Ich befasse mich nicht mit dieser Operation, die blockiert, also dachte ich, ich könnte ContinueWith oder async / await überspringen und Result verwenden.

Während des Debuggens stieß ich auf ein Problem, bei dem der Remoteserver nicht reagierte. Als ich durch den Code schritt, schien mein Code in der dritten Zeile einfach nicht mehr zu laufen ... Die aktuelle Stack-Zeigerzeile wurde nicht mehr gelb hervorgehoben und ging nicht in die nächste Zeile über. Es ist einfach verschwunden. Es dauerte eine Weile, bis mir klar wurde, dass ich auf die Zeitüberschreitung der Anforderung warten sollte.

var client = new HttpClient();
var task = client.PostAsync("http://someservice/", someContent);
var response = task.Result;

Mein Verständnis war, dass das Aufrufen von Result für die Task dazu führte, dass der Code synchron ausgeführt wurde, um sich wie folgt zu verhalten (ich weiß, dass es keine Post-Methode im HttpClient gibt):

var client = new HttpClient();
var response = client.Post("http://someservice/", someContent);

Ich bin mir nicht sicher, ob das eine schlechte Sache ist. Ich versuche nur, meinen Kopf darum zu kümmern. Stimmt es wirklich, dass meine Anwendung aufgrund der Tatsache, dass der HTTP-Client Tasks anstelle der Ergebnisse direkt zurückgibt, automatisch die Asynchronität nutzt, auch wenn ich denke, dass ich sie vermeide?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage