Upload
mvp-showcast
View
389
Download
1
Embed Size (px)
DESCRIPTION
Palestra: Programação assíncrona com C# 5 no Visual Studio 2013 Palestrante: Rogério Moraes de Carvalho Realização: 03/12/2013 17h Trilha: Ferramentas de desenvolvimento & Linguagens de programação Sessão: Desenvolvimento Evento: MVP ShowCast 2013 Site: http://mvpshowcast.azurewebsites.net
Citation preview
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
MVP ShowCast 2013
Programação assíncrona com C# 5no Visual Studio 2013
Rogério Moraes de Carvalho
Visual C#
Diretor de Tecnologia – VITA Informática
@rogeriomc rogeriomc.wordpress.com
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Agenda
♦Padrões assíncronos no .NET Framework 4.5.1
♦Task-based Asynchronous Pattern (TAP)
♦async e await
♦Demonstração 1: TAP, async e await
♦Cancelamento (opcional)
♦Progresso (opcional)
♦Demonstração 2: Cancelamento e progresso
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Padrões assíncronos no.NET Framework 4.5.1
Asynchronous Programming Model (APM)
Método BeginNomeMetodo
Método EndNomeMetodo.NET
1.0
Event-based Asynchronous Pattern (EAP)
Método NomeMetodoAsync
Evento NomeMetodoCompleted
Opcionalmente um método NomeMetodoAsyncCancel
Opcionalmente um evento NomeMetodoProgressChanged
.NET
2.0
Task-based Asynchronous Pattern (TAP) *
Método NomeMetodoAsync ou NomeMetodoTaskAsync* Abordagem atualmente recomendada pela Microsoft para programação assíncrona.NET
4.0
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
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.WhenAll(params Task[] tasks)
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
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
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
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
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Demonstração 1TAP, async e await
♦Class Library♦Namespace MvpShowCast.Dev.LinguagensProgramacao.Matematica
♦Classe estática AnaliseCombinatoria
♦Método estático síncrono: Fatorial(ulong)
♦Método estático assíncrono: FatorialAsync(ulong)
♦Aplicação WPF (Windows Presentation Foundation)♦Consumo do método síncrono
versus
♦Consumo do método assíncrono
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
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
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
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
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Demonstração 2Cancelamento e progresso
♦Class Library♦Novo método assíncrono:FatorialAsync(ulong, CancellationToken, IProgress<ulong>)
♦Suporte a cancelamento e progresso na aplicação WPF
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
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
SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Perguntas & Respostas
Rogério Moraes de Carvalho
Visual C#
Diretor de Tecnologia – VITA Informática
@rogeriomc rogeriom.wordpress.com