Articles of async await

Async lambda a la expresión <Func >

Es ampliamente conocido que puedo convertir expresiones lambda ordinarias a Expression : Func foo1 = () => 0; // delegate compiles fine Expression<Func> foo2 = () => 0; // expression compiles fine ¿Cómo podría hacer lo mismo con async lambda? He intentado la siguiente analogía: Func<Task> bar1 = async () => 0; // also compiles […]

Async / espera Lambdas

Tengo un problema extraño al combinar async / await para que funcione: creé un pequeño procedimiento, que debería manejar básicamente el bash / captura de cada acción: internal static void HandledAction(Action action, Info infoBar) { try { action(); } catch (Exception ex) { infoBar.SetError(“An Exception occured: ” + ex.Message); WriteLog(ex.StackTrace); } Es elegante, pero vale […]

Esperan y async en la misma linea.

Entiendo cómo funciona async y cómo se compara con las promesas de javascript, pero no estoy seguro de cómo una línea como la de abajo podría tener algún beneficio IdentityResult result = await UserManager.CreateAsync(user, model.password); ya que estamos creando una llamada asíncrona e inmediatamente esperando en el subproceso para que las líneas que siguen no […]

No se puede convertir implícitamente el tipo ‘System.Collections.Generic.List ‘ a ‘System.Threading.Tasks.Task >

Estoy recibiendo una excepción. No se puede convertir implícitamente el tipo ‘System.Collections.Generic.List’ to ‘System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable>’ A continuación se muestra mi propiedad y método. private List WebFormFields { get; set; } = new List(); Task<IEnumerable> IRegistrationRepository.GetWebFormFields() { return WebFormFields; }

¿Esperando que suceda algo – modelo asíncrono o síncrono?

Tengo este método WaitForReaderArrival que es como se muestra a continuación: (Se ejecuta todo el tiempo esperando a que llegue un lector) public void WaitForReaderArrival() { do { if (ReaderArrived()) { break; } System.Threading.Thread.Sleep(1000); } while (ReaderArrived() == false); } Y estoy esperando que llegue el lector usando, await Task.Run(new Action(WaitForReaderArrival)); if (ReaderArrived()) { //Raise […]

Punto muerto con async / await

Supongamos que estoy escribiendo un filtro MVC personalizado que realiza algunas llamadas asíncronas dentro de las anulaciones del método, como por ejemplo: public class MyActionFilter : System.Web.Mvc.ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext ctx) { var stuff = ConfigureAwaitHelper1().Result; // do stuff } public override void OnActionExecuting(ActionExecutingContext ctx) { var stuff = ConfigureAwaitHelper2().Result; // do stuff […]

Manera correcta de lanzar y atrapar excepciones usando async / await

Todos, por favor tomen el siguiente código: Task generateStageAsyncTask = null; generateStageAsyncTask = Task.Factory.StartNew(() => { return GenerateStage(ref workbook); }, this.token, TaskCreationOptions.LongRunning, TaskScheduler.Default); // Run core asynchroniously. bool bGenerationSuccess = false; try { bGenerationSuccess = await generateStageAsyncTask; } catch (OperationCancelledException e) { // Script cancellation. result.RunSucceeded = true; result.ResultInfo = “Script processing cancelled at the […]

Convertir Action callback a una espera

Tengo un método que realiza una Action . Cuando el método termina su procesamiento, llama a la Action con el valor de retorno. MethodWithCallback((finalResponse)=> { Console.WriteLine(finalResponse); }); Quiero usar esto en un controlador asíncrono web.api. ¿Cómo envuelvo este método para que pueda await a que este método se complete de forma async ? No puedo […]

Mantener implementaciones síncronas y asíncronas.

¿Cuáles son las mejores prácticas para mantener las versiones síncrona y asíncrona del método? Let’s suppose we have the following method: public ImportData Import(ZipFile zipFile) { … //Step 1. Initialization var extractedZipContent = zipFile.Extract(); //Step 2 … //Step 3. Some intermediate stuff var parsedData = ParseExtractedZipContent(extractedZipContent); //Step 4 … //Step 5. Some code afterwards } […]

¿Cómo maneja c # async void?

Generalmente programo servidores web y al principio pensé que debe haber una cadena continua de métodos que devuelvan la tarea, así que las cosas en la stack pueden preguntar a la base de datos si está hecho. Recientemente vi código wpf, que hace algo así: public async void Execute(object parameter) { await ExecuteAsync(parameter); } Llamado […]