Предположим, что мне нужен только один метод для запуска в async
.
Итак, у меня есть метод async
, как показано ниже:
public async Task Load(){
Task task1 = GetAsync(1);
Task task2 = GetAsync(2);
Task task3 = GetAsync(3);
var data1 = await task1; // <--Freezes here when called from GetSomethingElse()
var data2 = await task2;
var data3 = await task3;
..process data..
}
И затем я пытаюсь вызвать этот метод async
в другом методе как задачу, и хотел бы, чтобы он подождал, пока этот конкретный фрагмент кода async
не будет выполнен. Проблема в том, что нет. Когда он достигает первого await
в Load()
, он просто не заканчивает загрузку. Отладчик пуст и не дает никакой другой ошибки.
Можно ли вызывать метод async
из метода non async
, как это?
Есть причина, по которой мне не нужна эта конкретная задача async
, но функция Load()
, которую я делаю.
public void GetSomethingElse(){
var task1 = Load().Wait();
}
Как это возможно?
Я попытался даже изменить метод Load()
на использование var data = task1.Wait()
и т.д. вместо await
, но все равно никакой разницы, независимо от того, каким способом я пытаюсь. Если кто-то может помочь, это будет оценено.