C# Async, un an après
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

Contenu connexe

PPTX
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
PPTX
[Tech Days 2014 - Plénière J1] Votre futur est dans le code
PPTX
Techdays2014 mode offline et synchronisation avec windows phone et windows 8....
PPTX
Portable Class Library et Nuget : Le Combo gagnant
PPTX
Développer une Single Page Application HTML 5 pour tous les devices
PPTX
Créer des jeux pour Windows Phone et Windows Store avec Unity
PPTX
La validation UX du Store : Tout ce que vous avez toujours voulu savoir sans...
PPTX
Power Query Demos Extravaganza
Devenez Mobile Enterprise-Ready en développant vos applications LOB pour Wind...
[Tech Days 2014 - Plénière J1] Votre futur est dans le code
Techdays2014 mode offline et synchronisation avec windows phone et windows 8....
Portable Class Library et Nuget : Le Combo gagnant
Développer une Single Page Application HTML 5 pour tous les devices
Créer des jeux pour Windows Phone et Windows Store avec Unity
La validation UX du Store : Tout ce que vous avez toujours voulu savoir sans...
Power Query Demos Extravaganza

Tendances (18)

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

En vedette (10)

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

Plus de Microsoft (20)

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

Dernier (9)

PPTX
Projet de Fin d’Études – Plateforme FMS pour la Gestion des FCPR
PDF
Démystification des QR codes - histoire - utilisations - techniques
PPTX
test pour la présentation foire de Chalôns V1
PPT
Pratiques des systèmes d'information ppt
PDF
COURS GCDs Chap 9.pdf tous les éléments.
PDF
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
PDF
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Architecture logicielle et Modeles de Conception
PDF
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
Projet de Fin d’Études – Plateforme FMS pour la Gestion des FCPR
Démystification des QR codes - histoire - utilisations - techniques
test pour la présentation foire de Chalôns V1
Pratiques des systèmes d'information ppt
COURS GCDs Chap 9.pdf tous les éléments.
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
Architecture logicielle et Modeles de Conception
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...

C# Async, un an après

  • 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

Notes de l'éditeur

  • #6: Quelques rappels sur le cadre de C#Async
  • #8: C#Async sous le capot
  • #10: Awaitable « magique » par méthode d’extension
  • #12: Comprendre qui conditionne le contexte de retour d’un await
  • #13: Mise en ouvre d’un contexte de synchronisation personnalisé
  • #14: Utiliser C#Async pour implémenter un service continu