Sem categoria

MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await

Introdução

No dia 27/04/2011, eu apresentei o webcast do MSDN Task-based Asynchronous Pattern (TAP), async e await. Os webcasts do MSDN são transmissões ao vivo e gratuitas, realizadas por especialistas Microsoft ou líderes da comunidade, que detalham recursos de produtos, solucionam dúvidas de usuários e fazem demonstrações de novas tecnologias.

Task-based Asynchronous Pattern (TAP)

O padrão Task-based Asynchronous Pattern (TAP) corresponde a uma evolução do padrão Event-based Asynchronous Pattern (EAP) para programação assíncrona na plataforma .NET.

O TAP é um novo padrão no .NET Framework baseado nos tipos Task e Task do namespace System.Threading.Tasks. O padrão é implementado por um único método nomeado NomeOperacaoAsync, que deve retornar Task ou Task, baseado no tipo de retorno void ou TResult, respectivamente, do método síncrono correspondente (NomeOperacao). Se a classe já tiver um método NomeOperacaoAsync, então deve-se usar NomeOperacaoTaskAsync.

C# 5: async e await

O suporte a funções assíncronas será incorporado à linguagem C# na versão 5. Para isto, serão introduzidas duas novas palavras-chaves na linguagem: async e await. A palavra-chave await é usada para marcar chamadas assíncronas. Dispensa a necessidade de se criar funções de callback. A palavra-chave async deve estar presente na assinatura de funções que fazem chamadas assíncronas. A palavra-chave await somente pode ser usada na chamada de funções com a palavra-chave async na assinatura.

Apresentação teórica

Na parte teórica, eu mostrei informações sobre o padrão Task-based Asynchronous Pattern (TAP) e sobre o novo suporte à programação assíncrona na linguagem C# 5 com a introdução das palavras-chaves async e await, incluindo os seguintes tópicos:

  • Operação síncrona versus operação assíncrona
  • Programação assíncrona atualmente
  • Task-based Asynchronous Pattern (TAP)
  • Visual Studio Async CTP
  • Async CTP (SP1 Refresh)
  • Programação assíncrona com C# 5
  • Artigos e vídeos recomendados
  • Downloads recomendados

Slides da apresentação


Demonstração

Na apresentação, eu realizei uma demonstração de uma implementação do padrão Task-based Asynchronous Pattern (TAP) numa classe para cálculo da soma dos termos de uma série convergente. Para a demonstração, eu criei uma solução nomeada TapCS5AsyncAwait no Visual Studio 2010 e desenvolvi dois projetos: uma Class Library nomeada Msdn.Webcasts.Matematica.Series, com a implementação do padrão TAP, e uma Console Application nomeada SerieLeibniz para testar uma chamada assíncrona para somar os primeiros termos da série de Leibniz.

Na implementação da Class Library foram desenvolvidas duas classes: ResultadoSerieConvergente e SerieConvergente, conforme ilustrado no diagrama de classes abaixo.

ResultadoSerieConvergente
Classe ResultadoSerieConvergente
SerieConvergente
Classe SerieConvergente

Na aplicação console SerieLeibniz, eu referenciei a biblioteca de séries convergentes para calcular, de forma assíncrona, a convergência da soma dos primeiros termos da série de Leibniz. Abaixo, segue um exemplo da saída da aplicação na tentativa de calcular a convergência da soma dos 50 milhões primeiros termos da série de Leibniz. A aplicação é cancelada depois de 3 segundos, uma vez que o resultado ainda não havia sido calculado. A ideia foi demonstrar uma chamada assíncrona com opção de cancelamento.

TesteSerieLeibniz
Cancelamento da Série de Leibniz para 50 milhões de termos depois de 3 segundos

O código da demonstração pode ser baixado em:
Solução do Visual Studio 2010 com a demonstração do padrão Task-based Asynchronous Pattern (TAP)

Vídeo da apresentação

Assista ao vídeo da apresentação do Webcast no site da Microsoft em:
MSDN Webcast: C# 5 – Task-based Asynchronous Pattern (TAP), async e await

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s