在MemoryStream中下载数据

blazor

我有一个谷歌表并下载它:

 Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);

然后我做一个流:

 Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);

并使用此流。我想解析表。在控制台.net核心应用程序中,这种方法运行良好,但是当我在blazor应用程序中使用它时,它不起作用。

 Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);

结果

我也不例外。

一般承认的答案

问题是_res.Result阻塞线程直到任务完成,这导致死锁,因为blazor只有一个线程。

https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1.result?view=netframework-4.7.2

访问属性的get访问器会阻塞调用线程,直到异步操作完成;它相当于调用Wait方法。

您需要await _res任务,以便线程不阻塞并完成任务。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因