Articles of async await

Quando devo usar controladores asynchronouss no asp.net MVC?

Eu tenho algumas preocupações usando ações assíncronas no ASP.NET MVC. Quando melhora o desempenho dos meus aplicativos e quando isso não acontece? É bom usar a ação assíncrona em todos os lugares no ASP.NET MVC? Quanto aos methods de espera: devo usar as palavras-chave async / await quando eu quiser consultar um database (via EF […]

Async / await vs BackgroundWorker

Nos últimos dias, testei os novos resources do .net 4.5 e c # 5. Eu gosto de seus novos resources async / await. Anteriormente, eu usava o BackgroundWorker para lidar com processos mais longos em segundo plano com a interface do usuário responsiva. Minha pergunta é: depois de ter esses novos resources legais, quando devo […]

Quanto ao uso de Task.Start (), Task.Run () e Task.Factory.StartNew ()

Acabei de ver 3 rotinas sobre o uso de TPL que fazem o mesmo trabalho; aqui está o código: public static void Main() { Thread.CurrentThread.Name = “Main”; // Create a task and supply a user delegate by using a lambda expression. Task taskA = new Task( () => Console.WriteLine(“Hello from taskA.”)); // Start the task. […]

Se o async-await não criar nenhum encadeamento adicional, como ele torna os aplicativos responsivos?

De tempos em tempos, vejo que usar o async – await não cria nenhum encadeamento adicional. Isso não faz sentido porque as únicas maneiras que um computador pode parecer estar fazendo mais de uma coisa por vez são Realmente fazendo mais de 1 coisa de cada vez (executando em paralelo, fazendo uso de múltiplos processadores) […]

asynchronous no aplicativo de console em c #?

Eu tenho esse código simples: public static async Task SumTwoOperationsAsync() { var firstTask = GetOperationOneAsync(); var secondTask = GetOperationTwoAsync(); return await firstTask + await secondTask; } private async Task GetOperationOneAsync() { await Task.Delay(500); // Just to simulate an operation taking time return 10; } private async Task GetOperationTwoAsync() { await Task.Delay(100); // Just to simulate […]

Executando várias tarefas assíncronas e aguardando que todas sejam concluídas

Eu preciso executar várias tarefas assíncronas em um aplicativo de console e aguarde todos eles para concluir antes de processamento adicional. Há muitos artigos por aí, mas eu pareço ficar mais confuso quanto mais eu leio. Eu li e entendi os princípios básicos da biblioteca de tarefas, mas estou claramente perdendo um link em algum […]

Aguarde em uma tarefa concluída o mesmo que task.Result?

Eu estou lendo atualmente “Concurrency in C # Cookbook” por Stephen Cleary, e notei a seguinte técnica: var completedTask = await Task.WhenAny(downloadTask, timeoutTask); if (completedTask == timeoutTask) return null; return await downloadTask; downloadTask é uma chamada para httpclient.GetStringAsync e timeoutTask está executando Task.Delay. No caso de não expirar, o downloadTask já estará concluído. Por que […]

Quando usar corretamente Task.Run e quando apenas async-await

Eu gostaria de perguntar a você sobre sua opinião sobre a arquitetura correta quando usar o Task.Run . Eu estou experimentando lagging UI no nosso aplicativo WPF .NET 4.5 (com o framework Caliburn Micro). Basicamente eu estou fazendo (trechos de código muito simplificados): public class PageViewModel : IHandle { … public async void Handle(SomeMessage message) […]

Chamando o método asynchronous de forma síncrona

Eu tenho um método async : public async Task GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; } Eu preciso chamar esse método de um método síncrono. Como posso fazer isso sem ter que duplicar o método GenerateCodeAsync para que isso funcione de forma síncrona? Atualizar No entanto, nenhuma solução razoável foi encontrada. No […]

Usando async / wait para várias tarefas

Estou usando um cliente API completamente asynchronous, ou seja, cada operação retorna Task ou Task , por exemplo: static async Task DoSomething(int siteId, int postId, IBlogClient client) { await client.DeletePost(siteId, postId); // call API client Console.WriteLine(“Deleted post {0}.”, siteId); } Usando os operadores async / wait do C # 5, qual é a maneira correta […]