programação assíncrona com c# 5 no visual studio 2013 [mvp showcast 2013 - dev - ferramentas de...

12
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# 5 no Visual Studio 2013 Rogério Moraes de Carvalho Visual C# Diretor de Tecnologia – VITA Informática @ rogeriomc rogeriomc.wordpress.com

Upload: rogerio-moraes-de-carvalho

Post on 24-May-2015

1.609 views

Category:

Technology


4 download

DESCRIPTION

Palestra: Programação assíncrona com C# 5 no Visual Studio 2013 Palestrante: Rogério Moraes de Carvalho (MVP Visual C#) 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

TRANSCRIPT

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