Prazer em desenvolver software
Programação Assíncrona é atualmente um dos elementos mais importantes no desenvolvimento de software, um cliente ao navegar por uma aplicação deseja ter uma experiência rica e responsiva, para entregar essa experiência foi introduzido no C# 5.0 uma nova sintaxe simplificada e direta, anteriormente trabalhar com multithread era uma tarefa complexa que exigia muitas linhas de código, agora neste novo modelo tornou-se simples.
Antes de aprender a utilizar a sintaxe do novo modelo de programação assíncrona é muito importante conhecermos quando utilizar programação assíncrona, programação assíncrona é comum ser utilizada ao trabalhar com imagens, arquivos, wcf ou um processo que envolve muita regra de negócio complexa que consequentemente torna-se lento.
Abaixo segue uma imagem de um modelo assíncrono evidenciando um ganho de performance de 5 segundos:

Na figura acima, T1 foi executado em paralelo a T2 e T3, como T2 e T3 representam 5 segundos então a execução de T1, T2 e T3 demorou 5 segundos, logo em um processo não assíncrono demoraria 10 segundos porque T2 teria que esperar o retorno de T1.
Entendendo na prática, abaixo foi feita uma implementação simples para que possamos entender o conceito, importante notar as palavras reservadas async e await, onde async é utilizada na declaração do método e sua função é apenas habilitar a utilização do poderoso await dentro do corpo do método, await recebe como argumento uma Task que é uma tarefa que pode executar uma ação e diz que essa ação será executada em uma thread isolada independente das demais.
No método Main temos a chamada dos métodos de forma estruturada na ordem a seguir:
FazAlgumaCoisa
Soma
Multiplica
Devido o método FazAlgumaCoisa ser assíncrono o método Soma e Multiplicação não precisam esperar o método FazAlgumaCoisa ter um retorno, podendo rodar paralelo, o resultado da execução dessa implementação é:
O resultado da soma é : 20
O resultado da multiplicação é : 100
FazAlgumacoisa
Interessante notar que o método FazAlgumaCoisa embora tenha sido chamada primeiro foi executado por último seu processo demorou mais.
using System;
using System.Threading.Tasks;
namespace DevBrasil
{
public class DevBrasil
{
public static void Main()
{
var result = FazAlgumaCoisa();
Soma(10, 10);
Multiplica(10, 10);
Console.Read();
}
private static async Task FazAlgumaCoisa()
{
await Task.Delay(1000);
Console.WriteLine("FazAlgumaCoisa");
}
private static void Soma(int num1, int num2)
{
Console.WriteLine("O resultado da soma é : {0} ", num1 + num2);
}
private static void Multiplica(int num1, int num2)
{
Console.WriteLine("O resultado da multiplicacao é : {0} ", num1 * num2);
}
}
}
Vantagem
A sintaxe é clara, basicamente constitui de apenas duas palavras reservadas, A palavra reservada await se encarrega de todo o gerenciamento da thread o que facilita o desenvolvimento, antigamente todo o gerenciamento era realizado programaticamente.
Neste artigo foi apresentado de forma simples o novo paradigma de desenvolvimento de processos assíncronos existente na linguagem C#.
Para saber mais
Aprofunde seu conhecimento sobre C#
© 2019 Criado por Ramon Durães.
Ativado por
Você precisa ser um membro de DevBrasil para adicionar comentários!
Entrar em DevBrasil