# Programação Assíncrona com C-Sharp Parte 3 de 3

Carlos Henrique
weblank
Published in
2 min readMay 21, 2018

--

Efim vamos falar de TAP (Task-based Asynchronous Pattern) 🎉🎈🎊. Há três semanas iniciei uma série sobre programação assíncrona com a linguagem de programação C-Sharp e o Framework da Microsoft (.NET Framework- “Full”).

são 3 posts, 1 para cada padrão:

  1. Asynchronous Programming Model = APM (Part 1 de 3)
  2. Event-Based Asynchronous Pattern = EAP (Part 2 de 3)
  3. Task-Based Asynchronous Pattern = TAP (Part 3 de 3)

## Task-Based Asynchronous Pattern = TAP

(padrão recomendado)

TAP é composto por um único método que representará a inicialização e finalização da operação assíncrona, ao contrário do padrão que vimos anteriormente no post de APM (Asynchronous Programming Model). No padrão APM precisamos dos métodos BeginSomthing e EndSomthing, lembra ?

Em comparação com o padrão EAP (Event-based Asynchronous Pattern), não é necessário o sufíxo Async ao nomear o method, muito menos a necessidade de definir um ou mais enventos na classe.

### Beleza, mas como funciona então ?

usamos duas apis/classes do .NetFramework:

Estas classes nos permite o uso de métodos para criação, manupulação e combinação das tasks, exemplos:

  • WhenAll ;
  • WhenAny ;
  • ContinueWith ;
  • Canceled ;
  • Run ;
  • FromResult ;
  • Delay ;
  • RetrayOnFault ;
  • NeedOnlyOne ;
  • Interleaved Operations ;
  • WhenAllOrFirstException ;
  • AsyncCache ;
  • AsyncProducerConsumerCollection ;

Aqui o objetivo não é aprofundarmos em cada um destes métodos/ combinações mas demonstrarmos a diversidade já presente nas classes Task e Task<TResult>.

para se aprofundar nos estudos:
consuming-the-task-based-asynchronous-pattern ;
consuming-the-task-based-asynchronous-pattern#combinators ;

Abaixo um exemplo da construção de uma classe com um método assíncrono usando o padrão TAP.

dica importante: quando retornarmos uma Task<TResult> geralmente queremos retornar mais que um valor para isso podemos usar um objeto estruturado ou tuples.

doc oficial para aprofundar o conhecimento.

--

--