c# - run - El operador Await solo se puede usar dentro de un método Async
task.run async c# (1)
Solo puede usar await
en un método async
, y Main
no puede ser async
.
Tendrá que usar su propio contexto compatible con la sincronización, invocar Wait
en la Task
devuelta en el método Main
, o simplemente ignorar la Task
devuelta y simplemente bloquear en la llamada a Read
. Tenga en cuenta que Wait
ajustará cualquier excepción en una AggregateException
.
Si quieres una buena introducción, mira mi async
post async
/ await
.
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de hacer un programa simple para probar la nueva funcionalidad .NET async dentro de Visual Studio 2012. Generalmente uso BackgroundWorkers para ejecutar código que consume tiempo de forma asincrónica, pero a veces parece una molestia para una operación relativamente simple (pero costosa) . El nuevo modificador asíncrono parece que sería genial de usar, pero desafortunadamente parece que no puedo hacer una prueba simple.
Aquí está mi código, en una aplicación de consola 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!";
}
Revisé algunos ejemplos en MSDN y me parece que este código debería estar funcionando, pero en su lugar obtengo un error de compilación en la línea que contiene "aguardar QueryRover ();" ¿Me estoy volviendo loco o está pasando algo sospechoso?