SlideShare ist ein Scribd-Unternehmen logo
1 von 14
C# Async, un an après
Mitsuru FURUTA
CTO
Sensorit
mitsufu@sensorit.fr, http://mitsufu.wordpress.com, @mitsufu

Code/Developpement
Donnez votre avis !
Depuis votre smartphone sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toute les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les Techdays !

#mstechdays

Code/developpement
Agenda
• Introduction/Rappels
• Comment ça marche ?
• Synchronisation
– SynchronizableThread

• SequentialTask
– Relance automatique sans thread supplémentaire

• Q&A
#mstechdays

Code/developpement
Introduction/Rappels
•
•
•
•

Intégré à C# 5/.Net 4.5
Evolution du langage + librairies
Asynchrone != parallèle
Async/Await
– Écriture linéaire des callbacks asynchrones (mono ou multithread)
– Chainage d’appels à travers un moteur à état
– Encapsulation automatique de Task pour les méthodes async

• Awaitable pattern
#mstechdays

Code/developpement
Rappels

#mstechdays

Code/developpement
Comment ça marche ?
• “Awaitable” pattern
– public object GetAwaiter();
• INotifyCompletion
• Public bool IsCompleted { get; }
• public object GetResult();
public interface IAwaitable<out TResult>
{
IAwaiter<TResult> GetAwaiter();
}
public interface IAwaiter<out TResult> : INotifyCompletion // or ICriticalNotifyCompletion
{
bool IsCompleted { get; }
TResult GetResult();
}

#mstechdays

Code/developpement
« Awaitable » pattern
manuellement

#mstechdays

Code/developpement
Comment ça marche ?
• Par méthode d’extension
• CallContext
– Logical context

#mstechdays

Code/developpement
« Awaitable » pattern
Par méthode d’extension

#mstechdays

Code/developpement
Contexte de synchronisation
• Le retour d’un await revient automatiquement au
thread appellant
– Par quel mécanisme ?
– Notion “ambiante”

• Qu’est-ce le SynchronizationContext ?
• ConfigureAwait()

• Contexte de synchronization inexistant ?
– Comportement par défaut
– Comment en créer un soi-même ?
#mstechdays

Code/developpement
SynchronizableThread

#mstechdays

Code/developpement
SequentialTask

#mstechdays

Code/developpement
Digital is
business

Weitere ähnliche Inhalte

Was ist angesagt?

Développer avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows StoreDévelopper avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows StoreMicrosoft
 
Powershell, 45 tips & tricks pour votre utilisation quotidienne
Powershell, 45 tips & tricks pour votre utilisation quotidienne Powershell, 45 tips & tricks pour votre utilisation quotidienne
Powershell, 45 tips & tricks pour votre utilisation quotidienne Microsoft Technet France
 
Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud
Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud
Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud Microsoft
 
L'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits MicrosoftL'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits MicrosoftMicrosoft
 
Mise en œuvre d’une démarche DevOps dans Windows Azure
Mise en œuvre d’une démarche DevOps dans Windows AzureMise en œuvre d’une démarche DevOps dans Windows Azure
Mise en œuvre d’une démarche DevOps dans Windows AzureMicrosoft Technet France
 
Livraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseLivraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseMicrosoft
 
NDepend 5 en action par son créateur
NDepend 5 en action par son créateurNDepend 5 en action par son créateur
NDepend 5 en action par son créateurMicrosoft
 
Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Microsoft
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSMicrosoft
 
Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...
Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...
Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...Microsoft
 
Vers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérienceVers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérienceMicrosoft
 
Les nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en actionLes nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en actionMicrosoft
 
Conception applications 3 écrans sur Windows 8/WP8/Xbox 360
Conception applications 3 écrans sur Windows 8/WP8/Xbox 360Conception applications 3 écrans sur Windows 8/WP8/Xbox 360
Conception applications 3 écrans sur Windows 8/WP8/Xbox 360Microsoft
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...
Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...
Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...Microsoft Technet France
 
Python dans le cloud avec Windows Azure
Python dans le cloud avec Windows AzurePython dans le cloud avec Windows Azure
Python dans le cloud avec Windows AzureMicrosoft
 
Visual studio 2013 - Techdays 2014
Visual studio 2013 - Techdays 2014Visual studio 2013 - Techdays 2014
Visual studio 2013 - Techdays 2014Etienne Margraff
 

Was ist angesagt? (18)

Développer avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows StoreDévelopper avec Visual Studio et TFS 2012 ses applications Windows Store
Développer avec Visual Studio et TFS 2012 ses applications Windows Store
 
Powershell, 45 tips & tricks pour votre utilisation quotidienne
Powershell, 45 tips & tricks pour votre utilisation quotidienne Powershell, 45 tips & tricks pour votre utilisation quotidienne
Powershell, 45 tips & tricks pour votre utilisation quotidienne
 
Malware Unchained
Malware UnchainedMalware Unchained
Malware Unchained
 
Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud
Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud
Symfony2 et Microsoft Azure, l’efficacité de PHP dans le cloud
 
L'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits MicrosoftL'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
 
Mise en œuvre d’une démarche DevOps dans Windows Azure
Mise en œuvre d’une démarche DevOps dans Windows AzureMise en œuvre d’une démarche DevOps dans Windows Azure
Mise en œuvre d’une démarche DevOps dans Windows Azure
 
Livraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseLivraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InRelease
 
NDepend 5 en action par son créateur
NDepend 5 en action par son créateurNDepend 5 en action par son créateur
NDepend 5 en action par son créateur
 
Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Introduction au développement Windows 8.1
Introduction au développement Windows 8.1
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJS
 
Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...
Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...
Avec Hadoop, Excel et… 1€, réalisez votre premier Mobile BigData Tracker en m...
 
Vers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérienceVers des applications modernes : retour d'expérience
Vers des applications modernes : retour d'expérience
 
Les nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en actionLes nouveautés d’HTML5 et IE11 en action
Les nouveautés d’HTML5 et IE11 en action
 
Conception applications 3 écrans sur Windows 8/WP8/Xbox 360
Conception applications 3 écrans sur Windows 8/WP8/Xbox 360Conception applications 3 écrans sur Windows 8/WP8/Xbox 360
Conception applications 3 écrans sur Windows 8/WP8/Xbox 360
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...
Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...
Protéger vos données dans un contexte BYOD/Office 365 avec le nouveau service...
 
Python dans le cloud avec Windows Azure
Python dans le cloud avec Windows AzurePython dans le cloud avec Windows Azure
Python dans le cloud avec Windows Azure
 
Visual studio 2013 - Techdays 2014
Visual studio 2013 - Techdays 2014Visual studio 2013 - Techdays 2014
Visual studio 2013 - Techdays 2014
 

Andere mochten auch

Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010MD DAY
 
Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1Microsoft
 
Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"Microsoft pour les PME
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Les nouveautés de C# 7
Les nouveautés de C# 7Les nouveautés de C# 7
Les nouveautés de C# 7Microsoft
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Abdelouahed Abdou
 
"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifié"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifiéGerald Reinhart
 
Comment devenir un bon programmeur en c#
Comment devenir un bon programmeur en c#Comment devenir un bon programmeur en c#
Comment devenir un bon programmeur en c#O'neil Konan
 
BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéCARA_Lyon
 

Andere mochten auch (10)

Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1Mode offline et Synchronisation avec Windows Phone et Windows 8.1
Mode offline et Synchronisation avec Windows Phone et Windows 8.1
 
Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"Keynote "PME & Startups : concurrents ou exemples à suivre ?"
Keynote "PME & Startups : concurrents ou exemples à suivre ?"
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Les nouveautés de C# 7
Les nouveautés de C# 7Les nouveautés de C# 7
Les nouveautés de C# 7
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 
"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifié"Spécification par l'exemple" par l'exemple : le BDD démystifié
"Spécification par l'exemple" par l'exemple : le BDD démystifié
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Comment devenir un bon programmeur en c#
Comment devenir un bon programmeur en c#Comment devenir un bon programmeur en c#
Comment devenir un bon programmeur en c#
 
BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilité
 

Ähnlich wie C# Async, un an après

L'agilité en entreprise avec TFS 2013
L'agilité en entreprise avec TFS 2013L'agilité en entreprise avec TFS 2013
L'agilité en entreprise avec TFS 2013Microsoft
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQubeVincent Biret
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation Microsoft
 
Windows Server vNext - administration et réseau
Windows Server vNext - administration et réseauWindows Server vNext - administration et réseau
Windows Server vNext - administration et réseauMicrosoft Technet France
 
Windows Server vNext- administration et réseau
Windows Server vNext- administration et réseauWindows Server vNext- administration et réseau
Windows Server vNext- administration et réseauMicrosoft Décideurs IT
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France François-Guillaume Ribreau
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Atelier mooc enseigner le langage c en ligne
Atelier   mooc enseigner le langage c en ligneAtelier   mooc enseigner le langage c en ligne
Atelier mooc enseigner le langage c en ligneElla Hamonic
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Les nouveautés du Windows Runtime 8.1
Les nouveautés du Windows Runtime 8.1Les nouveautés du Windows Runtime 8.1
Les nouveautés du Windows Runtime 8.1Microsoft
 
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...Microsoft
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanneDidier Durand
 
Revolution Mobile @Web2day
Revolution Mobile @Web2dayRevolution Mobile @Web2day
Revolution Mobile @Web2dayAlexandre Jubien
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6Microsoft
 

Ähnlich wie C# Async, un an après (20)

L'agilité en entreprise avec TFS 2013
L'agilité en entreprise avec TFS 2013L'agilité en entreprise avec TFS 2013
L'agilité en entreprise avec TFS 2013
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation
 
Windows Server vNext - administration et réseau
Windows Server vNext - administration et réseauWindows Server vNext - administration et réseau
Windows Server vNext - administration et réseau
 
Windows Server vNext- administration et réseau
Windows Server vNext- administration et réseauWindows Server vNext- administration et réseau
Windows Server vNext- administration et réseau
 
Powershell et les techniques de remoting
Powershell et les techniques de remoting Powershell et les techniques de remoting
Powershell et les techniques de remoting
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Atelier mooc enseigner le langage c en ligne
Atelier   mooc enseigner le langage c en ligneAtelier   mooc enseigner le langage c en ligne
Atelier mooc enseigner le langage c en ligne
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Les nouveautés du Windows Runtime 8.1
Les nouveautés du Windows Runtime 8.1Les nouveautés du Windows Runtime 8.1
Les nouveautés du Windows Runtime 8.1
 
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
HTML5, JavaScript et CSS3: Concevoir des interfaces tactiles à destination de...
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
 
Revolution Mobile @Web2day
Revolution Mobile @Web2dayRevolution Mobile @Web2day
Revolution Mobile @Web2day
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 

Mehr von Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 
La 3D sur le web avec Babylon.js pas à pas
La 3D sur le web avec Babylon.js pas à pasLa 3D sur le web avec Babylon.js pas à pas
La 3D sur le web avec Babylon.js pas à pasMicrosoft
 

Mehr von Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 
La 3D sur le web avec Babylon.js pas à pas
La 3D sur le web avec Babylon.js pas à pasLa 3D sur le web avec Babylon.js pas à pas
La 3D sur le web avec Babylon.js pas à pas
 

C# Async, un an après

  • 1.
  • 2. C# Async, un an après Mitsuru FURUTA CTO Sensorit mitsufu@sensorit.fr, http://mitsufu.wordpress.com, @mitsufu Code/Developpement
  • 3. Donnez votre avis ! Depuis votre smartphone sur : http://notes.mstechdays.fr De nombreux lots à gagner toute les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les Techdays ! #mstechdays Code/developpement
  • 4. Agenda • Introduction/Rappels • Comment ça marche ? • Synchronisation – SynchronizableThread • SequentialTask – Relance automatique sans thread supplémentaire • Q&A #mstechdays Code/developpement
  • 5. Introduction/Rappels • • • • Intégré à C# 5/.Net 4.5 Evolution du langage + librairies Asynchrone != parallèle Async/Await – Écriture linéaire des callbacks asynchrones (mono ou multithread) – Chainage d’appels à travers un moteur à état – Encapsulation automatique de Task pour les méthodes async • Awaitable pattern #mstechdays Code/developpement
  • 7. Comment ça marche ? • “Awaitable” pattern – public object GetAwaiter(); • INotifyCompletion • Public bool IsCompleted { get; } • public object GetResult(); public interface IAwaitable<out TResult> { IAwaiter<TResult> GetAwaiter(); } public interface IAwaiter<out TResult> : INotifyCompletion // or ICriticalNotifyCompletion { bool IsCompleted { get; } TResult GetResult(); } #mstechdays Code/developpement
  • 8. « Awaitable » pattern manuellement #mstechdays Code/developpement
  • 9. Comment ça marche ? • Par méthode d’extension • CallContext – Logical context #mstechdays Code/developpement
  • 10. « Awaitable » pattern Par méthode d’extension #mstechdays Code/developpement
  • 11. Contexte de synchronisation • Le retour d’un await revient automatiquement au thread appellant – Par quel mécanisme ? – Notion “ambiante” • Qu’est-ce le SynchronizationContext ? • ConfigureAwait() • Contexte de synchronization inexistant ? – Comportement par défaut – Comment en créer un soi-même ? #mstechdays Code/developpement

Hinweis der Redaktion

  1. Quelques rappels sur le cadre de C#Async
  2. C#Async sous le capot
  3. Awaitable « magique » par méthode d’extension
  4. Comprendre qui conditionne le contexte de retour d’un await
  5. Mise en ouvre d’un contexte de synchronisation personnalisé
  6. Utiliser C#Async pour implémenter un service continu