SlideShare uma empresa Scribd logo
Globalcode – Open4education
Programação assíncrona com C# 5
e .NET Framework 4.5
Rogério Moraes de Carvalho
VITA Informática
@rogeriom
rogeriomc.wordpress.com
Globalcode – Open4education
Agenda
Assincronia no .NET 4.5
Task-based Asynchronous Pattern (TAP)
async e await
Demo 1 - TAP, async e await
Cancelamento (opcional)
Demo 2 - Cancelamento
Progresso (opcional)
Demo 3 - Progresso
Globalcode – Open4education
Assincronia no .NET 4.5
Padrões assíncronos no .NET Framework 4.5
Asynchronous Programming Model (APM)
Método BeginNomeMetodo
Método EndNomeMetodo
.NET1.0
Event-based Asynchronous Pattern (EAP)
Método NomeMetodoAsync
Evento NomeMetodoCompleted
Opcionalmente um método NomeMetodoAsyncCancel
Opcionalmente um evento NomeMetodoProgressChanged
.NET2.0
Task-based Asynchronous Pattern (TAP) *
Método NomeMetodoAsync ou NomeMetodoTaskAsync
* Abordagem recomendada atualmente para programação assíncrona
.NET4.0
Globalcode – Open4education
Task-based Asynchronous
Pattern (TAP)
Padrão baseado nos tipos Task e Task<TResult>
Representam operações assíncronas arbitrarias
Fornecem um ciclo de vida para operações assíncronas
Definidos no namespace System.Threading.Tasks
Task helpers
Execução em segundo plano
Task.Run(() => {/* código de segundo plano */})
Composição paralela (combinadores)
Task.WhenAny(params Task[] tasks)
Task.WhelAll(params Task[] tasks)
Globalcode – Open4education
Task-based Asynchronous
Pattern (TAP)
Assinatura da versão síncrona do método
NomeMetodo(...)
Assinaturas das versões assíncronas do método
NomeMetodoAsync(...)
NomeMetodoAsync(..., CancellationToken c)
NomeMetodoAsync(..., IProgress<T> p)
NomeMetodoAsync(..., CancellationToken c, IProgress<T> p)
Tipos de retorno das versões assíncronas
void NomeMetodo(...)  Task NomeMetodoAsync(...) *
T NomeMetodo(...)  Task<T> NomeMetodoAsync(...)
* Neste caso, a versão assíncrona também pode retornar void
Globalcode – Open4education
async e await
Modificador async
Indica que um método, uma expressão lambda ou um
método anônimo é assíncrono
Operador await
Suspende uma tarefa (Task ou Task<T>) até que ela seja
concluída
Globalcode – Open4education
Demo 1
TAP, async e await
Class Library
Namespace Tdc2013.TrilhaDotNet.Matematica
Classe estática AnaliseCombinatoria
Método síncrono: Fatorial(ulong)
Método assíncrono: FatorialAsync(ulong)
Aplicação WPF (Windows Presentation Foundation)
Consumo do método síncrono
versus
Consumo do método assíncrono
Globalcode – Open4education
Cancelamento (opcional)
Estrutura CancellationToken *
Propaga a notificação que uma operação deve ser
cancelada
Classe CancellationTokenSource *
Sinaliza para um CancellationToken que ele deve ser
cancelado
* Ambos os tipos estão no namespace System.Threading
Globalcode – Open4education
Demo 2
Cancelamento
Class Library
Novo método assíncrono:
FatorialAsync(ulong, CancellationToken)
Suporte a cancelamento na aplicação WPF
Globalcode – Open4education
Progresso (opcional)
Interface System.IProgress<in T>
Define um fornecedor para atualizações de progresso
Se for null, o progresso não deve ser reportado
Um único método: void Report(T value)
Classe System.Progress<T>
Implementa a interface System.IProgress<T>
Permite, opcionalmente, invocar um callback para cada
valor de progresso
O evento ProgressChanged permite notificar progressos
Globalcode – Open4education
Demo 3
Progresso
Class Library
Novo método assíncrono:
FatorialAsync(ulong, CancellationToken,
IProgress<ulong>)
Suporte a progresso na aplicação WPF
Globalcode – Open4education
Documentação
Task-based Asynchronous Pattern (TAP)
http://msdn.microsoft.com/en-us/library/hh873175.aspx
Implementing the Task-based Asynchronous Pattern
http://msdn.microsoft.com/en-us/library/hh873177.aspx
Consuming the Task-based Asynchronous Pattern
http://msdn.microsoft.com/en-us/library/hh873173.aspx
Asynchronous Programming with Async and Await
(C# and Visual Basic)
http://msdn.microsoft.com/en-
us/library/vstudio/hh191443.aspx

Mais conteúdo relacionado

PDF
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
PDF
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
PPT
Resumo OpenMP
PDF
Recursividade em linguagem C
ODP
Aula14 - Funções em PHP
ODP
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
Resumo OpenMP
Recursividade em linguagem C
Aula14 - Funções em PHP

Mais procurados (20)

ODP
Aula11 - PHP
PDF
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
PPTX
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
PDF
Resumo vinculacao aula lp1 10 a
PDF
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
PPT
Log4net
PPT
Tdc2014 - Guia do Tester Técnico das Galáxias
PDF
Shell script
PPT
Struts Cap10 DepuraçãO E Log
PDF
Zephir
PPTX
Usando POP com Programação Funcional
PDF
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
PDF
Desofuscando um webshell em php h2hc Ed.9
PPTX
Debugging tips and tricks
PPTX
Como melhoramos a performance dos testes automatizados com py.test e factoryboy
PDF
Paradigmas de Linguagens de Programação - Estruturas de Controle
PDF
PDF
OOP (in portuguese)
ODP
Oficina de Web Design Lecom - PHP e JavaScript
PDF
Java introdução ao java
Aula11 - PHP
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
Resumo vinculacao aula lp1 10 a
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Log4net
Tdc2014 - Guia do Tester Técnico das Galáxias
Shell script
Struts Cap10 DepuraçãO E Log
Zephir
Usando POP com Programação Funcional
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
Desofuscando um webshell em php h2hc Ed.9
Debugging tips and tricks
Como melhoramos a performance dos testes automatizados com py.test e factoryboy
Paradigmas de Linguagens de Programação - Estruturas de Controle
OOP (in portuguese)
Oficina de Web Design Lecom - PHP e JavaScript
Java introdução ao java
Anúncio

Semelhante a The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com C# 5 e .NET Framework 4.5 (20)

PDF
ProcessosEscalonamento.pdf
PDF
Gerenciando aspectos e eventos com Zend Framework 2
PDF
APM Model in .NET - PT-pt
PPT
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
PPT
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
PDF
Escalonador Earliest Deadline First - TDC2014SP
PDF
Async/Await Pattern in C#
PDF
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
ODP
Qualidade no desenvolvimento de software com PHPUnit
PDF
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
PDF
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
PPT
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
PDF
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
PDF
Respiração Programada
PPT
Gerências de Processos: Sincronização
PDF
PHP fora da Web
PPT
Controlando Projetos com Netbeans e Subversion
PPTX
PHPSP TestFest 2010
PPT
Gerência de Processos: Processos
ProcessosEscalonamento.pdf
Gerenciando aspectos e eventos com Zend Framework 2
APM Model in .NET - PT-pt
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
Escalonador Earliest Deadline First - TDC2014SP
Async/Await Pattern in C#
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
Qualidade no desenvolvimento de software com PHPUnit
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
Respiração Programada
Gerências de Processos: Sincronização
PHP fora da Web
Controlando Projetos com Netbeans e Subversion
PHPSP TestFest 2010
Gerência de Processos: Processos
Anúncio

Mais de Rogério Moraes de Carvalho (20)

PDF
Docker com ASP.NET Core e Hospedagem no Azure
PDF
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
PDF
Tecnologias XML e XML no SQL Server 2016
PDF
Cebraspe 2016: .NET Core e ASP.NET Core
PDF
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
PDF
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
PDF
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
PDF
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
PDF
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
PDF
Suporte XML nativo no SQL Server 2014/2016
PDF
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
PDF
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
PDF
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
PDF
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
PDF
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
PDF
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
PDF
Uma visão de mercado das linguagens de programação
PDF
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
PDF
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
Docker com ASP.NET Core e Hospedagem no Azure
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
Tecnologias XML e XML no SQL Server 2016
Cebraspe 2016: .NET Core e ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Suporte XML nativo no SQL Server 2014/2016
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Uma visão de mercado das linguagens de programação
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...

Último (19)

PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula04-Academia Heri- Tecnologia Geral 2025
COBITxITIL-Entenda as diferença em uso governança TI
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Apple Pippin Uma breve introdução. - David Glotz
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Aula 18 - Manipulacao De Arquivos python
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss

The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com C# 5 e .NET Framework 4.5

  • 1. Globalcode – Open4education Programação assíncrona com C# 5 e .NET Framework 4.5 Rogério Moraes de Carvalho VITA Informática @rogeriom rogeriomc.wordpress.com
  • 2. Globalcode – Open4education Agenda Assincronia no .NET 4.5 Task-based Asynchronous Pattern (TAP) async e await Demo 1 - TAP, async e await Cancelamento (opcional) Demo 2 - Cancelamento Progresso (opcional) Demo 3 - Progresso
  • 3. Globalcode – Open4education Assincronia no .NET 4.5 Padrões assíncronos no .NET Framework 4.5 Asynchronous Programming Model (APM) Método BeginNomeMetodo Método EndNomeMetodo .NET1.0 Event-based Asynchronous Pattern (EAP) Método NomeMetodoAsync Evento NomeMetodoCompleted Opcionalmente um método NomeMetodoAsyncCancel Opcionalmente um evento NomeMetodoProgressChanged .NET2.0 Task-based Asynchronous Pattern (TAP) * Método NomeMetodoAsync ou NomeMetodoTaskAsync * Abordagem recomendada atualmente para programação assíncrona .NET4.0
  • 4. Globalcode – Open4education Task-based Asynchronous Pattern (TAP) Padrão baseado nos tipos Task e Task<TResult> Representam operações assíncronas arbitrarias Fornecem um ciclo de vida para operações assíncronas Definidos no namespace System.Threading.Tasks Task helpers Execução em segundo plano Task.Run(() => {/* código de segundo plano */}) Composição paralela (combinadores) Task.WhenAny(params Task[] tasks) Task.WhelAll(params Task[] tasks)
  • 5. Globalcode – Open4education Task-based Asynchronous Pattern (TAP) Assinatura da versão síncrona do método NomeMetodo(...) Assinaturas das versões assíncronas do método NomeMetodoAsync(...) NomeMetodoAsync(..., CancellationToken c) NomeMetodoAsync(..., IProgress<T> p) NomeMetodoAsync(..., CancellationToken c, IProgress<T> p) Tipos de retorno das versões assíncronas void NomeMetodo(...)  Task NomeMetodoAsync(...) * T NomeMetodo(...)  Task<T> NomeMetodoAsync(...) * Neste caso, a versão assíncrona também pode retornar void
  • 6. Globalcode – Open4education async e await Modificador async Indica que um método, uma expressão lambda ou um método anônimo é assíncrono Operador await Suspende uma tarefa (Task ou Task<T>) até que ela seja concluída
  • 7. Globalcode – Open4education Demo 1 TAP, async e await Class Library Namespace Tdc2013.TrilhaDotNet.Matematica Classe estática AnaliseCombinatoria Método síncrono: Fatorial(ulong) Método assíncrono: FatorialAsync(ulong) Aplicação WPF (Windows Presentation Foundation) Consumo do método síncrono versus Consumo do método assíncrono
  • 8. Globalcode – Open4education Cancelamento (opcional) Estrutura CancellationToken * Propaga a notificação que uma operação deve ser cancelada Classe CancellationTokenSource * Sinaliza para um CancellationToken que ele deve ser cancelado * Ambos os tipos estão no namespace System.Threading
  • 9. Globalcode – Open4education Demo 2 Cancelamento Class Library Novo método assíncrono: FatorialAsync(ulong, CancellationToken) Suporte a cancelamento na aplicação WPF
  • 10. Globalcode – Open4education Progresso (opcional) Interface System.IProgress<in T> Define um fornecedor para atualizações de progresso Se for null, o progresso não deve ser reportado Um único método: void Report(T value) Classe System.Progress<T> Implementa a interface System.IProgress<T> Permite, opcionalmente, invocar um callback para cada valor de progresso O evento ProgressChanged permite notificar progressos
  • 11. Globalcode – Open4education Demo 3 Progresso Class Library Novo método assíncrono: FatorialAsync(ulong, CancellationToken, IProgress<ulong>) Suporte a progresso na aplicação WPF
  • 12. Globalcode – Open4education Documentação Task-based Asynchronous Pattern (TAP) http://msdn.microsoft.com/en-us/library/hh873175.aspx Implementing the Task-based Asynchronous Pattern http://msdn.microsoft.com/en-us/library/hh873177.aspx Consuming the Task-based Asynchronous Pattern http://msdn.microsoft.com/en-us/library/hh873173.aspx Asynchronous Programming with Async and Await (C# and Visual Basic) http://msdn.microsoft.com/en- us/library/vstudio/hh191443.aspx