我有一个Google表格并下载:
Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);
然后我创建一个流:
Stream _stream = new MemoryStream(_res.Result);
并使用此流。 我想解析表。 在控制台.net核心应用程序中,此方法很好用,但是当我在blazor应用程序中使用该方法时,则无效。
Task<byte[]> _res = Http.GetByteArrayAsync(_webPath);
Console.WriteLine("3");
_stream = new MemoryStream(_res.Result);
Console.WriteLine("4");
我也不例外。
答案 0 :(得分:1)
问题在于_res.Result
会阻塞线程,直到任务完成为止,这会导致死锁,因为blazor只有一个线程。
访问属性的get访问器会阻塞调用线程,直到异步操作完成为止;等效于调用Wait方法。
您需要使用await _res
等待任务,以便线程不会被阻塞并且可以完成任务。