Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

C# Async, un an après

973 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
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

×