C# Async, un an après

865 vues

Publié le

Dans sa dernière mouture, C# vous propose depuis un an le support de l’asynchronisme. Bien qu’ayant moi-même déjà présenté des sessions sur ce sujet, je vous propose ici de vous partager une compréhension plus avancée ainsi que des nouveaux modèles de programmation que j’ai pu découvrir et mettre en œuvre dans mes propres projets.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
865
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
26
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Quelques rappels sur le cadre de C#Async
  • C#Async sous le capot
  • Awaitable « magique » par méthode d’extension
  • Comprendre qui conditionne le contexte de retour d’un await
  • Mise en ouvre d’un contexte de synchronisation personnalisé
  • Utiliser C#Async pour implémenter un service continu
  • C# Async, un an après

    1. 1. C# Async, un an après Mitsuru FURUTA CTO Sensorit mitsufu@sensorit.fr, http://mitsufu.wordpress.com, @mitsufu Code/Developpement
    2. 2. 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
    3. 3. Agenda • Introduction/Rappels • Comment ça marche ? • Synchronisation – SynchronizableThread • SequentialTask – Relance automatique sans thread supplémentaire • Q&A #mstechdays Code/developpement
    4. 4. 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
    5. 5. Rappels #mstechdays Code/developpement
    6. 6. 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
    7. 7. « Awaitable » pattern manuellement #mstechdays Code/developpement
    8. 8. Comment ça marche ? • Par méthode d’extension • CallContext – Logical context #mstechdays Code/developpement
    9. 9. « Awaitable » pattern Par méthode d’extension #mstechdays Code/developpement
    10. 10. 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
    11. 11. SynchronizableThread #mstechdays Code/developpement
    12. 12. SequentialTask #mstechdays Code/developpement
    13. 13. Digital is business

    ×