Оператор 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
/await
intro post.