SlideShare a Scribd company logo
Async/Await make it simple!!
         Massimo Bonanni
       http://codetailor.blogspot.com
    massimo.bonanni@domusdotnet.org
             @massimobonanni
Agenda

   Cos’è e cosa non è «Asincrono»
   L’asincrono prima di Async/Await
   Cosa sono Async e Await
   Cosa fanno Async/Await
   La «magia» del compilatore
   Async/Await ed i thread
   Cancellation e Progress in Async/Await
   Riutilizzare vecchio codice
   Async/Await e Windows Store Apps
   Async/Await e il framework 4.0
Cos’è «Asincrono»

«Il lavoro di un cameriere
consiste nell’attendere ad un
tavolo finché il cliente non ha
terminato il pasto! Se vuoi
servire due tavoli, hai bisogno
di due camerieri!»
«Non hai bisogno di due camerieri! Un unico
cameriere può facilmente servire due tavoli
contemporaneamente, semplicemente
passando da uno all’altro»
Cosè “Asincrono”

Pensiamo al cameriere come un thread, e il tavolo
come un metodo da eseguire.

In un approccio tradizionale, per eseguire due
compiti contemporaneamente (ad esempio,
mantenere l'interfaccia utente sensibile durante il
download di un file), si sarebbero utilizzati due
thread.

Creare thread è inefficiente (assumere camerieri
noleggio) e si deve combattere parecchio per
aggiornare le UI dal thread in background (fare in
modo che i camerieri non siano in conflitto).
Asincrono vs Sincrono: perchè e come!


    asincrono [a-sìn-cro-no] agg.

«dispositivo che opera senza un riferimento
temporale di sincronizzazione rispetto a un
altro dispositivo»
                        ↓
         «non [a] nello stesso tempo»
Cosa non è «Asincrono»


Asincrono non significa «eseguito in
background»!!

Eseguire un’operazione in background è
una delle possibili implementazioni di
asincrono, non l’unica e, a volte, neanche la
migliore
Asincrono vs Sincrono: perchè e
come!

Un approccio asincrono garantisce che le
nostre interfacce grafiche siano:

• Responsive
• Non bloccate da logiche di accesso ai dati
  (sia per dati locali che remoti)
DEMO

Numeri primi non «Fluid»
L’asincrono prima di Async/Await


Il framework .NET, prima dell’introduzione
della TPL, prevedeva due modalità di
implementazione del pattern asincrono:

• Asynchronous Programming Model
  (APM)
• Event-based Asynchronous Pattern
  (EAP)
Asynchronous Programming Model


APM si basa sul design pattern
IAsyncResult e prevede che le operazioni
asincrone siano individuate da una coppia di
metodi caratterizzati dai prefissi Begin/End.

Un esempio è dato dalla classe FileStream
con i suoi metodi BeginRead e EndRead.
Asynchronous Programming Model

Per utilizzare questo tipo di chiamate asincrone
sono necessari i seguenti step:

 1. il chiamante invoca il metodo Begin passando una
    funzione di callback;
 2. l’esecuzione dell’operazione asincrona avviene in
    un thread separato;
 3. al termine dell’operazione è richiamata la callback
    passata dal chiamante;
 4. il chiamante conclude l’operazione asincrona
    invocando il metodo End (che restituisce i dati di
    ritorno del metodo).
Event-based Asynchronous
Pattern

Le operazioni asincrone sono rappresentate da una
coppia Metodo/Evento.
Il metodo è identificato dal suffisso Async mentre
l’evento dal suffisso Completed.

Nell’argomento dell’evento sono, generalmente,
riportati i risultati dell’operazione.

Un esempio presente nel framework .NET è il
metodo DownloadStringAsync (e il corrispettivo
evento DownloadStringCompleted) della classe
WebClient
Event-based Asynchronous
Pattern

EAP è stato introdotto con la versione 2.0 del
framework .NET.

I passi eseguiti dal chiamante sono:
1. il chiamante si sottoscrive all’evento di
    completamento dell’operazione (Completed);
2. il chiamante esegue il metodo Async;
3. il metodo esegue l’operazione in un thread
    separato;
4. al termine dell’operazione viene sollevato l’evento
    Completed e il chiamante viene avvertito del
    completamento.
DEMO

Numeri primi in EAP
Cosa sono Async/Await

Vantaggi di Async/Await:

1. Permette di scrivere codice asincrono con
   una struttura che sembra quella di un codice
   sincrono;
2. In caso di aggiornamenti dell’interfaccia non
   è necessario utilizzare un
   SynchronizationContext;
3. La gestione delle eccezioni avviene in
   maniera del tutto analoga ad un codice
   sincrono.
Cosa sono Async/Await


La parola chiave Async indica al
compilatore che un metodo (sia esso
classico che una lamdba expression) è
asicrono e che, quindi, al suo interno
possono trovare posto dei punti di
“sospensione” identificati dalla parola
chiave Await.
Cosa sono Async/Await


La parola chiave Await indica al compilatore
che il metodo a cui fa riferimento deve essere
invocato in maniera asincrona, inserendo una
“sospensione” nel flusso di esecuzione, per
riprendere dal metodo successivo nel momento
in cui tale metodo asincrono è terminato.
Nel frattempo, controllo viene restituito al
chiamante del metodo asincrono garantendo
che questo non sia bloccato.
Async/Await e i Task

La classe Task è uno strumento con cui
implementare metodi «awaitabili» (l’altro è
l’interfaccia IAsyncOperation)
La parola chiave Await davanti ad una funzione che
ritorna un Task, ne cambia «magicamente» il valore
di ritorno (e il comportamento):
Async/Await e i Task

Esempio: metodo DownloadStringTaskAsync
della classe WebClient



Un metodo che restituisce un Task è definito
«Awaitable» e può essere usato in maniera
asincrona anteponendo Await:
Cosa fanno Async/Await

MyForm




         Premere
La «magia» del compilatore


Il compilatore, grazie alle parole chiave
Async e Await, è in grado di:

• Gestire tutti i task eventualmente creati
  all’interno di un metodo «Awaitable»;
• Gestire la macchina a stati per il corretto
  richiamo degli stessi.
La «magia» del compilatore


Il compilatore, dietro le quinte, crea una
macchina a stati i cui stati sono i possibili
flussi tra i diversi metodi «Awaitabili»
richiamati.

Per ogni metodo Async, viene creata una
struttura che implementa l’interfaccia
IAsyncStateMachine deputata alla gestione
della macchina a stati.
Async/Await e i thread

L’uso di Async/Await può generare o meno
la creazione di nuovi thread.

Un metodo Async «gira» nel
«synchronization context» corrente.

Solo nel caso di Task.Run avremo l’effettiva
creazione di un thread separato
(sincronizzato dal compilatore).
DEMO

Numeri primi in Async/Await
Annullare l’esecuzione di un Async


In alcuni casi può essere necessario
annullare una operazione Async.

Poiché alla base del paradigma Async/Await
c’è il Task, possiamo ricorrere al
CancellationToken per annullare
un’operazione asincrona esattamente come
faremo per un Task.
DEMO

Numeri primi in Async/Await - Cancellation
Progress di un Async


Se vogliamo supportare l’aggiornamento
dell’interfaccia grafica, possiamo utilizzare
l’interfaccia IProgress(Of T).

E’ sufficiente prevedere un parametro di tipo
IProgress(Of T) con T il tipo da comunicare
alla UI per l’aggiornamento.
DEMO

Numeri primi in Async/Await - Progress
Riutilizzare vecchio codice

Se abbiamo del codice «legacy» che dobbiamo
rapidamente riutilizzare in ottica Async,
possiamo far leva sulla classe Task:
 Public Function LegacyMethod(i As Integer) As Integer
     .
     .
 End Function



        Public Function LegacyMethodAsync(i As Integer) As Task(Of Integer)
            Dim task = Task.Run(Function() LegacyMethod(i))
            Return task
        End Function
Riutilizzare vecchio codice

Se possibile è meglio ristrutturare il codice
«legacy» utilizzando internamente metodi
«Awaitable» forniti dal framework anziché
usare il Task a tappeto.

Se si utilizza, ad esempio, il metodo
DownloadString della classe WebClient, è
meglio sostituirlo con il metodo
DownloadStringTaskAsync piuttosto che
incapsulare tutto il nostro metodo in un task.
Async/Await e Windows Store
Apps

Tutte le operazioni che, potenzialmente,
possono durare più di 50ms, sono
asincrone!

Il framework per le Windows Store Apps
espone, per queste operazioni, solo ed
esclusivamente i metodi Async!

Ragionate nello stesso modo per le vostre
applicazioni (senza esagerare)!
Async/Await e .NET framework 4.0

Possiamo utilizzare il pattern Async/Await anche con
il framework 4.0 utilizzando l’Async Targetting Pack.

Il pack permette di usare Await in VS2012 con le
seguenti versioni di progetto:

•   .NET Framework 4.0 (con KB2468871)
•   Silverlight 4 e 5
•   Windows Phone 7.5
•   Portable Class Libraries per le precedenti
    piattaforme
Q&A


Se avete domande non fatele in asincrono
..... fatele ora!!!
Grazie agli sponsor
Riferimenti

Async Targeting Pack per VS2012
http://www.microsoft.com/en-us/download/details.aspx?id=29576

Asynchronous Programming with Async and
Await (C# and Visual Basic)
http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

Asynchronous programming (Windows Store
apps)
http://msdn.microsoft.com/en-
us/library/windows/apps/hh464924.aspx

Base Class Library (BCL) Blog
http://blogs.msdn.com/b/bclteam/

More Related Content

PPTX
Actions on Google e Alexa skills per .NET lovers
PPT
Introduzione a jQuery
PPTX
Soluzioni IoT con le tecnologie Microsoft
PPTX
Web Api – The HTTP Way
PDF
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
PDF
Architetttura Della Soluzione
PPTX
DotNetCampus - Continuous Integration con Sql Server
PDF
AntiPatterns: i vizi del programmatore
Actions on Google e Alexa skills per .NET lovers
Introduzione a jQuery
Soluzioni IoT con le tecnologie Microsoft
Web Api – The HTTP Way
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Architetttura Della Soluzione
DotNetCampus - Continuous Integration con Sql Server
AntiPatterns: i vizi del programmatore

What's hot (20)

PPTX
Javascript task automation
PPTX
Del furia signalr-to-the-max
PPTX
ASP.NET MVC: sfruttare la piattaforma al 100%
PDF
Dependency injection questa sconosciuta
PDF
Managed Extensibility Framework (MEF)
PPTX
Javascript task automation
PPTX
Wcf data services
PPTX
Dot netcampus2015 green-template
PDF
PPTX
Slide typescript - net campus
PPTX
Async: scalabilità e responsiveness senza pari! @ CDays
PPTX
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
PDF
Introduzione a Service Fabric e Actor Model
PPTX
Akka.net & Actor Model
PDF
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
PPTX
Windows azure - abbattere tempi e costi di sviluppo
PPTX
ASP.NET MVC 6 - uno sguardo al futuro
PPTX
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
PDF
Alla scoperta di gRPC
PPTX
Programmazione funzionale: un primo approccio attraverso F#
Javascript task automation
Del furia signalr-to-the-max
ASP.NET MVC: sfruttare la piattaforma al 100%
Dependency injection questa sconosciuta
Managed Extensibility Framework (MEF)
Javascript task automation
Wcf data services
Dot netcampus2015 green-template
Slide typescript - net campus
Async: scalabilità e responsiveness senza pari! @ CDays
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
Introduzione a Service Fabric e Actor Model
Akka.net & Actor Model
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
Windows azure - abbattere tempi e costi di sviluppo
ASP.NET MVC 6 - uno sguardo al futuro
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
Alla scoperta di gRPC
Programmazione funzionale: un primo approccio attraverso F#
Ad

Similar to Async/Await: make it simple!! (20)

PDF
Don’t await … try async/await !
PDF
Multithread Programming
PPTX
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
PPT
Asp.net gestione della_memoria
PPTX
Introduzione ad ASP.NET Core
PPTX
.Net 4.0 Preview @ UGIdotNet
PPTX
Introduzione a .Net Core
PPTX
Introduction to C#
PPTX
Asp.Net MVC 2 :: VS 2010 Community Tour
PPTX
Asp.net web form 4.5 - what's new!!
PPTX
Le novita di visual studio 2012
PPT
iOS7 - multitasking e dynamics - Daniele Galiotto
PPT
What's New in ASP.NET 4.5 and Visual Studio 2012
ODP
Net core base
PDF
Programmazione concorrente in Java (vecchio modello)
PDF
ASP.NET Core - dove siamo arrivati
PPTX
Mobile e Smart Client
PDF
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
PPTX
Sviluppo apps multipiattaforma con visual studio e xamarin
PPTX
Da Rotor a .NET Core ed indietro: Microsoft <3 Open Source
Don’t await … try async/await !
Multithread Programming
Potenza e controllo con le Parallel Libraries (Raffaele Rialdi)
Asp.net gestione della_memoria
Introduzione ad ASP.NET Core
.Net 4.0 Preview @ UGIdotNet
Introduzione a .Net Core
Introduction to C#
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.net web form 4.5 - what's new!!
Le novita di visual studio 2012
iOS7 - multitasking e dynamics - Daniele Galiotto
What's New in ASP.NET 4.5 and Visual Studio 2012
Net core base
Programmazione concorrente in Java (vecchio modello)
ASP.NET Core - dove siamo arrivati
Mobile e Smart Client
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Sviluppo apps multipiattaforma con visual studio e xamarin
Da Rotor a .NET Core ed indietro: Microsoft <3 Open Source
Ad

More from Massimo Bonanni (20)

PDF
Empower every Azure Function to achieve more!!
PDF
Durable Functions vs Logic App : la guerra dei workflow!!
PDF
Stateful pattern con Azure Functions
PDF
Architetture Serverless con SQL Server e Azure Functions
PDF
IoT in salsa serverless
PDF
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
PDF
Stateful patterns in Azure Functions
PDF
IoT in salsa Serverless
PDF
The art of Azure Functions (unit) testing and monitoring
PDF
Empower every Azure Function to achieve more!!
PDF
The art of Azure Functions (unit) testing and monitoring
PDF
Everything you always wanted to know about API Management (but were afraid to...
PDF
Workflow as code with Azure Durable Functions
PDF
Xmas Serverless Transformation: when the elf doesn’t scale!
PPTX
Welcome Azure Functions 2. 0
PPTX
Discovering the Service Fabric's actor model
PPTX
Testing a Service Fabric solution and live happy!!
PPTX
Discovering the Service Fabric's actor model
PPTX
Soluzioni IoT con le tecnologie Microsoft
PPTX
Project Gesture & Real Sense: il potere nelle mani!!
Empower every Azure Function to achieve more!!
Durable Functions vs Logic App : la guerra dei workflow!!
Stateful pattern con Azure Functions
Architetture Serverless con SQL Server e Azure Functions
IoT in salsa serverless
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Stateful patterns in Azure Functions
IoT in salsa Serverless
The art of Azure Functions (unit) testing and monitoring
Empower every Azure Function to achieve more!!
The art of Azure Functions (unit) testing and monitoring
Everything you always wanted to know about API Management (but were afraid to...
Workflow as code with Azure Durable Functions
Xmas Serverless Transformation: when the elf doesn’t scale!
Welcome Azure Functions 2. 0
Discovering the Service Fabric's actor model
Testing a Service Fabric solution and live happy!!
Discovering the Service Fabric's actor model
Soluzioni IoT con le tecnologie Microsoft
Project Gesture & Real Sense: il potere nelle mani!!

Async/Await: make it simple!!

  • 1. Async/Await make it simple!! Massimo Bonanni http://codetailor.blogspot.com massimo.bonanni@domusdotnet.org @massimobonanni
  • 2. Agenda  Cos’è e cosa non è «Asincrono»  L’asincrono prima di Async/Await  Cosa sono Async e Await  Cosa fanno Async/Await  La «magia» del compilatore  Async/Await ed i thread  Cancellation e Progress in Async/Await  Riutilizzare vecchio codice  Async/Await e Windows Store Apps  Async/Await e il framework 4.0
  • 3. Cos’è «Asincrono» «Il lavoro di un cameriere consiste nell’attendere ad un tavolo finché il cliente non ha terminato il pasto! Se vuoi servire due tavoli, hai bisogno di due camerieri!» «Non hai bisogno di due camerieri! Un unico cameriere può facilmente servire due tavoli contemporaneamente, semplicemente passando da uno all’altro»
  • 4. Cosè “Asincrono” Pensiamo al cameriere come un thread, e il tavolo come un metodo da eseguire. In un approccio tradizionale, per eseguire due compiti contemporaneamente (ad esempio, mantenere l'interfaccia utente sensibile durante il download di un file), si sarebbero utilizzati due thread. Creare thread è inefficiente (assumere camerieri noleggio) e si deve combattere parecchio per aggiornare le UI dal thread in background (fare in modo che i camerieri non siano in conflitto).
  • 5. Asincrono vs Sincrono: perchè e come! asincrono [a-sìn-cro-no] agg. «dispositivo che opera senza un riferimento temporale di sincronizzazione rispetto a un altro dispositivo» ↓ «non [a] nello stesso tempo»
  • 6. Cosa non è «Asincrono» Asincrono non significa «eseguito in background»!! Eseguire un’operazione in background è una delle possibili implementazioni di asincrono, non l’unica e, a volte, neanche la migliore
  • 7. Asincrono vs Sincrono: perchè e come! Un approccio asincrono garantisce che le nostre interfacce grafiche siano: • Responsive • Non bloccate da logiche di accesso ai dati (sia per dati locali che remoti)
  • 9. L’asincrono prima di Async/Await Il framework .NET, prima dell’introduzione della TPL, prevedeva due modalità di implementazione del pattern asincrono: • Asynchronous Programming Model (APM) • Event-based Asynchronous Pattern (EAP)
  • 10. Asynchronous Programming Model APM si basa sul design pattern IAsyncResult e prevede che le operazioni asincrone siano individuate da una coppia di metodi caratterizzati dai prefissi Begin/End. Un esempio è dato dalla classe FileStream con i suoi metodi BeginRead e EndRead.
  • 11. Asynchronous Programming Model Per utilizzare questo tipo di chiamate asincrone sono necessari i seguenti step: 1. il chiamante invoca il metodo Begin passando una funzione di callback; 2. l’esecuzione dell’operazione asincrona avviene in un thread separato; 3. al termine dell’operazione è richiamata la callback passata dal chiamante; 4. il chiamante conclude l’operazione asincrona invocando il metodo End (che restituisce i dati di ritorno del metodo).
  • 12. Event-based Asynchronous Pattern Le operazioni asincrone sono rappresentate da una coppia Metodo/Evento. Il metodo è identificato dal suffisso Async mentre l’evento dal suffisso Completed. Nell’argomento dell’evento sono, generalmente, riportati i risultati dell’operazione. Un esempio presente nel framework .NET è il metodo DownloadStringAsync (e il corrispettivo evento DownloadStringCompleted) della classe WebClient
  • 13. Event-based Asynchronous Pattern EAP è stato introdotto con la versione 2.0 del framework .NET. I passi eseguiti dal chiamante sono: 1. il chiamante si sottoscrive all’evento di completamento dell’operazione (Completed); 2. il chiamante esegue il metodo Async; 3. il metodo esegue l’operazione in un thread separato; 4. al termine dell’operazione viene sollevato l’evento Completed e il chiamante viene avvertito del completamento.
  • 15. Cosa sono Async/Await Vantaggi di Async/Await: 1. Permette di scrivere codice asincrono con una struttura che sembra quella di un codice sincrono; 2. In caso di aggiornamenti dell’interfaccia non è necessario utilizzare un SynchronizationContext; 3. La gestione delle eccezioni avviene in maniera del tutto analoga ad un codice sincrono.
  • 16. Cosa sono Async/Await La parola chiave Async indica al compilatore che un metodo (sia esso classico che una lamdba expression) è asicrono e che, quindi, al suo interno possono trovare posto dei punti di “sospensione” identificati dalla parola chiave Await.
  • 17. Cosa sono Async/Await La parola chiave Await indica al compilatore che il metodo a cui fa riferimento deve essere invocato in maniera asincrona, inserendo una “sospensione” nel flusso di esecuzione, per riprendere dal metodo successivo nel momento in cui tale metodo asincrono è terminato. Nel frattempo, controllo viene restituito al chiamante del metodo asincrono garantendo che questo non sia bloccato.
  • 18. Async/Await e i Task La classe Task è uno strumento con cui implementare metodi «awaitabili» (l’altro è l’interfaccia IAsyncOperation) La parola chiave Await davanti ad una funzione che ritorna un Task, ne cambia «magicamente» il valore di ritorno (e il comportamento):
  • 19. Async/Await e i Task Esempio: metodo DownloadStringTaskAsync della classe WebClient Un metodo che restituisce un Task è definito «Awaitable» e può essere usato in maniera asincrona anteponendo Await:
  • 21. La «magia» del compilatore Il compilatore, grazie alle parole chiave Async e Await, è in grado di: • Gestire tutti i task eventualmente creati all’interno di un metodo «Awaitable»; • Gestire la macchina a stati per il corretto richiamo degli stessi.
  • 22. La «magia» del compilatore Il compilatore, dietro le quinte, crea una macchina a stati i cui stati sono i possibili flussi tra i diversi metodi «Awaitabili» richiamati. Per ogni metodo Async, viene creata una struttura che implementa l’interfaccia IAsyncStateMachine deputata alla gestione della macchina a stati.
  • 23. Async/Await e i thread L’uso di Async/Await può generare o meno la creazione di nuovi thread. Un metodo Async «gira» nel «synchronization context» corrente. Solo nel caso di Task.Run avremo l’effettiva creazione di un thread separato (sincronizzato dal compilatore).
  • 24. DEMO Numeri primi in Async/Await
  • 25. Annullare l’esecuzione di un Async In alcuni casi può essere necessario annullare una operazione Async. Poiché alla base del paradigma Async/Await c’è il Task, possiamo ricorrere al CancellationToken per annullare un’operazione asincrona esattamente come faremo per un Task.
  • 26. DEMO Numeri primi in Async/Await - Cancellation
  • 27. Progress di un Async Se vogliamo supportare l’aggiornamento dell’interfaccia grafica, possiamo utilizzare l’interfaccia IProgress(Of T). E’ sufficiente prevedere un parametro di tipo IProgress(Of T) con T il tipo da comunicare alla UI per l’aggiornamento.
  • 28. DEMO Numeri primi in Async/Await - Progress
  • 29. Riutilizzare vecchio codice Se abbiamo del codice «legacy» che dobbiamo rapidamente riutilizzare in ottica Async, possiamo far leva sulla classe Task: Public Function LegacyMethod(i As Integer) As Integer . . End Function Public Function LegacyMethodAsync(i As Integer) As Task(Of Integer) Dim task = Task.Run(Function() LegacyMethod(i)) Return task End Function
  • 30. Riutilizzare vecchio codice Se possibile è meglio ristrutturare il codice «legacy» utilizzando internamente metodi «Awaitable» forniti dal framework anziché usare il Task a tappeto. Se si utilizza, ad esempio, il metodo DownloadString della classe WebClient, è meglio sostituirlo con il metodo DownloadStringTaskAsync piuttosto che incapsulare tutto il nostro metodo in un task.
  • 31. Async/Await e Windows Store Apps Tutte le operazioni che, potenzialmente, possono durare più di 50ms, sono asincrone! Il framework per le Windows Store Apps espone, per queste operazioni, solo ed esclusivamente i metodi Async! Ragionate nello stesso modo per le vostre applicazioni (senza esagerare)!
  • 32. Async/Await e .NET framework 4.0 Possiamo utilizzare il pattern Async/Await anche con il framework 4.0 utilizzando l’Async Targetting Pack. Il pack permette di usare Await in VS2012 con le seguenti versioni di progetto: • .NET Framework 4.0 (con KB2468871) • Silverlight 4 e 5 • Windows Phone 7.5 • Portable Class Libraries per le precedenti piattaforme
  • 33. Q&A Se avete domande non fatele in asincrono ..... fatele ora!!!
  • 35. Riferimenti Async Targeting Pack per VS2012 http://www.microsoft.com/en-us/download/details.aspx?id=29576 Asynchronous Programming with Async and Await (C# and Visual Basic) http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx Asynchronous programming (Windows Store apps) http://msdn.microsoft.com/en- us/library/windows/apps/hh464924.aspx Base Class Library (BCL) Blog http://blogs.msdn.com/b/bclteam/