Ich habe eine Google-Tabelle und lade sie herunter:
Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);
Dann mache ich einen Stream:
Stream _stream = new MemoryStream(_res.Result);
Und arbeite mit diesem Stream. Ich möchte den Tisch analysieren. In der Konsole .net-Kern-Anwendung funktioniert diese Methode gut, aber wenn ich es in blazor App verwende, funktioniert es nicht.
Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);
Console.WriteLine("3");
_stream = new MemoryStream(_res.Result);
Console.WriteLine("4");
Ich habe keine Ausnahme.
Das Problem ist, dass _res.Result
den Thread blockiert, bis die Aufgabe abgeschlossen ist, was zu einem Deadlock führt, da Blazor nur einen Thread hat.
Der Zugriff auf den get-Accessor der Eigenschaft blockiert den aufrufenden Thread, bis der asynchrone Vorgang abgeschlossen ist. Dies entspricht dem Aufruf der Wait-Methode.
Sie müssen die Aufgabe mit await _res
damit der Thread nicht blockiert wird und die Aufgabe abschließen kann.