Загрузка данных в MemoryStream

blazor

Вопрос

У меня есть таблица google и загружаю ее:

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

Затем я создаю Stream:

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");

результат

У меня нет исключения.

Принятый ответ

Проблема заключается в том, что _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
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему