Articles of async await

¿Es posible “esperar rendimiento rendimiento DoSomethingAsync ()”

¿Los bloques de iterador regulares (es decir, “retorno de rendimiento”) son incompatibles con “asincrónico” y “aguardar”? Esto da una buena idea de lo que estoy tratando de hacer: async Task<IEnumerable> Method(String [] Strs) { // I want to compose the single result to the final result, so I use the SelectMany var finalResult = UrlStrings.SelectMany(link […]

Cómo Async.AwaitTask en Tarea simple (no Tarea )?

Estoy tratando de consumir una biblioteca de C # en F #. La biblioteca hace un uso intensivo de async / await. Quiero usar dentro de un flujo de trabajo async { … } en F #. Veo que podemos Async.AwaitTask en los métodos async C # que devuelven Task , pero ¿qué pasa con […]

Crear una tarea completa

Quiero crear una Task completa (no Task ). ¿Hay algo incorporado en .NET para hacer esto? Una pregunta relacionada: crea una tarea completada

¿Cómo puedo evitar continuidades sincrónicas en una tarea?

Tengo un código de biblioteca (red de socket) que proporciona una API basada en Task para respuestas pendientes a las solicitudes, en función de TaskCompletionSource . Sin embargo, hay una molestia en el TPL ya que parece imposible evitar las continuas sincrónicas. Lo que me gustaría poder hacer es: decirle a TaskCompletionSource que no debe […]

Descargar varios archivos de manera asincrónica y esperar a que todos ellos terminen antes de ejecutar el rest del código

Estoy tratando de descargar varios archivos de internet y espero a que todos ellos terminen. Esta es una aplicación de consola C # que estoy ejecutando, por lo que no es necesario ningún controlador de eventos de la barra de progreso. Sin embargo, actualmente continúa ejecutando el código aunque no se hayan descargado todos los […]

ConfigureAwait empuja la continuación a un hilo de grupo

Aquí hay un código de WinForms: async void Form1_Load(object sender, EventArgs e) { // on the UI thread Debug.WriteLine(new { where = “before”, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); var tcs = new TaskCompletionSource(); this.BeginInvoke(new MethodInvoker(() => tcs.SetResult(true))); await tcs.Task.ContinueWith(t => { // still on the UI thread Debug.WriteLine(new { where = “ContinueWith”, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); }, TaskContinuationOptions.ExecuteSynchronously).ConfigureAwait(false); […]

Esperar en el bloque catch

Tengo el siguiente código: WebClient wc = new WebClient(); string result; try { result = await wc.DownloadStringTaskAsync( new Uri( “http://badurl” ) ); } catch { result = await wc.DownloadStringTaskAsync( new Uri( “http://fallbackurl” ) ); } Básicamente quiero descargar desde una URL y cuando falla con una excepción deseo descargar desde otra URL. Tanto el tiempo […]

El operador Await solo se puede usar dentro de un método Async

Estoy tratando de hacer un progtwig 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, […]

Secuenciación de tareas y reentrada

Tengo el siguiente escenario, que creo que podría ser bastante común: Hay una tarea (un controlador de comandos de UI) que puede completarse de forma sincrónica o asíncrona. Los comandos pueden llegar más rápido de lo que se procesan. Si ya hay una tarea pendiente para un comando, la nueva tarea del controlador de comandos […]

¿TaskResult es lo mismo que .GetAwaiter.GetResult ()?

Recientemente estuve leyendo un código que usa muchos métodos asíncronos, pero a veces es necesario ejecutarlos de forma síncrona. El código hace: Foo foo = GetFooAsync(…).GetAwaiter().GetResult(); ¿Es esto lo mismo que Foo foo = GetFooAsync(…).Result; ?