Допустим, мне нужен только один метод для запуска в async
.Использование 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
, который может быть вызван от метода не async
, например? Есть причина, по которой мне не нужна эта конкретная задача: async
, но функция Load()
.
public void GetSomethingElse(){
var task1 = Load().Wait();
}
Как это возможно?
Я попытался даже изменить метод Load()
использовать var data = task1.Wait()
и т.д. вместо await
, до сих пор нет разницы, независимо от того, каким образом я стараюсь. Если кто-то может помочь, это будет оценено по достоинству.
try: 'var data1 = ждать Task.Run (() => GetAsync (1));' –
http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638. aspx –
@JohnWoo Я попробовал 'var data1 = task1.Wait();' сделал бы это по-другому? –