Оператор Await может использоваться только в асинхронном методе [дубликат]
этот вопрос уже есть ответ здесь:
Я пытаюсь сделать простую программу для тестирования новой асинхронной функции .NET в Visual Studio 2012. Обычно я использую BackgroundWorkers для выполнения трудоемкого кода асинхронно, но иногда это кажется хлопот для относительно простой (но дорогой) операции. Новый асинхронный модификатор выглядит так, как будто его было бы здорово использовать, но, к сожалению, я просто не могу получить простой тест.
вот мой код, в консольном приложении C#:
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, и мне кажется, что этот код должен работать, но вместо этого я получаю ошибку сборки в строке, содержащей "await QueryRover ();" я схожу с ума или что-то подозрительное происходит?
1 ответ:
вы можете использовать только
awaitнаasyncметод, иMainне может бытьasync.вам придется использовать свой собственный
async- совместимый контекст, вызовWaitна возвращенномTaskнаMainметод, или просто игнорировать возвращаемоеTaskи просто блок на вызовRead. Обратите внимание, чтоWaitбудет обернуть каких-либо исключений вAggregateException.если вы хотите хорошее вступление, смотрите мой
async/awaitintro post.