Оператор ожидания может использоваться только в рамках метода Async
Я пытаюсь создать простую программу для тестирования новой функции .NET async в Visual Studio 2012. Обычно я использую BackgroundWorkers для выполнения многозадачного кода асинхронно, но иногда это кажется затруднительным для относительно простого (но дорогой). Новый модификатор async выглядит так, как было бы здорово использовать, но, к сожалению, я просто не могу получить простой тест.
Здесь мой код, в приложении консоли С#:
static void Main(string[] args)
{
string MarsResponse = await QueryRover();
Console.WriteLine("Waiting for response from Mars...");
Console.WriteLine(MarsResponse);
Console.Read();
}
public static async Task<string> QueryRover()
{
await Task.Delay(5000);
return "Doin' good!";
}
Я проверил несколько примеров в MSDN и мне кажется, что этот код должен работать, но вместо этого я получаю ошибку сборки в строке, содержащей "ожидание QueryRover()"; Я схожу с ума или что-то подозрительное?
Ответы
Ответ 1
Вы можете использовать await
в методе async
, а Main
не может быть async
.
Вам нужно будет использовать свой собственный async
-компонентный контекст, вызовите Wait
в возвращаемом Task
в методе Main
или просто проигнорируйте возвращенный Task
и просто заблокируйте вызов Read
. Обратите внимание, что Wait
будет содержать все исключения в AggregateException
.
Если вы хотите получить хорошее введение, см. мой async
/await
ввод post.