without run operadores metodo method espaƱol ejemplos create carece await async asincrono c# .net-4.0 async-ctp async-await c#-5.0

c# - run - el metodo asincrono carece de operadores await



Usando async-await en.net 4 (5)

Actualmente estoy empezando a crear una aplicación que se beneficiaría mucho de la función async-await de C # 5. Pero no estoy seguro de qué versión de VS y del tiempo de ejecución asincrónico usar.

En cuanto a los gráficos de popularidad de OS, tendré que soportar Windows XP por otros tres años más o menos. Parece que .net 4.5 solo se ejecuta en las versiones más nuevas de Windows, por lo que debo apuntar a .net 4.0. Las máquinas de desarrollo usan Windows 7, por lo que usar una versión más nueva de VS no es un problema.

Ahora necesito elegir primero un compilador para hacer esto:

  • VS2010 con AsyncCTP
  • Vista previa VS2012 (y final una vez que llega), estableciendo el destino en .NET 4.0
  • Mono (Parece que 2.12 tiene async-await, prefiero / estoy acostumbrado a VS sobre MonoDevelop como IDE)

¿Cuál tiene menos errores de código gen? Mirando el blog de Jon Skeet, la Vista previa de VS2012 usa un generador de código nunca más que el CTP.

Y más importante aún, ¿qué tiempo de ejecución usar?

¿VS2012 contiene un tiempo de ejecución asincrónico redistribuible para usar con .net 4?

Logré compilar código, con la vista previa, al hacer referencia al tiempo de ejecución AsyncCTP. Pero dado que el CTP tiene condiciones de licencia desconocidas, no parece una buena solución a largo plazo.

¿O debería usar una implementación de un tercero? Tal vez mono tiene uno?

Para distribuir la biblioteca, prefiero simplemente poner el dll en el mismo directorio que la aplicación, en lugar de instalarlo de algún modo.

También me gustaría que mis binarios funcionen sin cambios en mono + Linux / MacOS. Por lo tanto, el tiempo de ejecución debe ser compatible con cualquier montura (2.12 probablemente) incorporada, o permitir su uso en sistemas operativos que no sean Windows.


Es posible usar el VS 12 beta para apuntar .NET 4.0 usando async / await.

Necesita copiar algún código en su proyecto que proporcione los tipos de los que depende el compilador.

Detalles here

Editar: hemos tomado esta técnica y la hemos convertido en una biblioteca de código abierto llamada AsyncBridge: https://nuget.org/packages/AsyncBridge


Microsoft lanzó el Async Targeting Pack (Microsoft.Bcl.Async) a través de Nuget como reemplazo del AsyncCTP.

Puedes leer más sobre esto aquí: http://blogs.msdn.com/b/bclteam/archive/2013/04/17/microsoft-bcl-async-is-now-stable.aspx .

Puede leer sobre la versión anterior aquí: http://blogs.msdn.com/b/lucian/archive/2012/04/24/async-targeting-pack.aspx .

Como este paquete es oficialmente compatible, ahora creo que la mejor opción para apuntar a XP + async sería usar Visual Studio 2012 + C # 5 + Async Targeting Pack.

Si sientes la necesidad de apuntar a .NET 3.5, puedes seguir usando (my) AsyncBridge para .NET 3.5 .


Si desea comenzar a distribuir su software después de que MS publique C # 5.0, entonces puede comenzar a desarrollar usando AsycnCTP. De lo contrario, no te recomendaría que lo uses, ya que solo es CTP, ni siquiera una versión beta. Se puede cambiar mucho cerca de la etapa beta y del lanzamiento. Puede ser inestable, etc.

Si desea introducir operaciones fáciles de sincronizar en su aplicación, le recomendaría que use extensiones reactivas y cosas construidas en la parte superior (interfaz de usuario reactiva, etc.), es simplemente hermoso.

En cuanto a VS2012, también contiene el mismo Async CTP por lo que recuerdo de mi // Build / tablet que MS me dio en esa conferencia.


Si desea poder distribuir su software, creo que la solución Mono es realmente su única opción en este momento. También dice que quiere que el resultado final se ejecute en Mono sobre Linux y OS X. La orientación de Mono para empezar parece ser la solución natural.

Tu próximo problema es el IDE. MonoDevelop obviamente funcionaría bien, pero usted dice que prefiere Visual Studio.

Greg Hurlman creó un perfil para codificar contra Mono 2.8 desde Visual Studio. Si hace un seguimiento con él, es posible que pueda orientarlo en la dirección correcta para desarrollarlo contra Mono 2.11 / 2.12 en Visual Studio.

Por supuesto, también hay Mono Tools para Visual Studio que es un producto comercial. Supongo que todavía lo ofrece Xamarin .

También es posible que pueda ejecutar los ensamblados de perfil 4.5 requeridos desde Mono en la parte superior de .NET, pero no lo he intentado. El perfil 4.5 es un súper conjunto estricto de 4.0 API. Tal vez darle una oportunidad e informar de nuevo.

EDITAR: Parece que puede usar Visual Studio Async CTP en producción ahora

Esto es lo que dice en la página de descarga :

Incluye un nuevo EULA para uso de producción. Nota: esta licencia no constituye un incentivo para que utilice el CTP para su código de producción. El CTP sigue siendo una Vista previa de tecnología no compatible y de uso a riesgo propio. Sin embargo, hemos recibido muchas solicitudes de los desarrolladores para utilizar el CTP para el código de producción, por lo que hemos cambiado la licencia para permitir eso.


Si está abierto a considerar otros lenguajes .Net, F # puede resolver su problema. Ha tenido la expresión de cálculo async {} durante años, y es compatible con versiones anteriores incluso con .Net 2.0. El requisito mínimo es Windows XP SP3. El tiempo de ejecución se puede descargar here .