Les méthodes asynchrones en C#5

12 sept

 

Microsoft a annoncé la sortie officielle de Visual Studio 2012 pour le 12 septembre 2012 (http://www.visualstudiolaunch.com/vs2012vle/Home)

Le nouvel environnement de développement de Microsoft permet d’utiliser le framework .net 4.5 et le C# 5.

L’évolution du langage C# apporte notamment une refonte des mécanismes asynchrones.

Ecrire du code asynchrone en C# 5
Dans l’exemple nous utiliserons deux boutons et un label :

  • Le bouton « btnAsync » va exécuter une méthode asynchrone qui durera 3 secondes sans bloquer l’interface utilisateur.
  • Le bouton « btnSync » appellera une méthode similaire mais de façon synchrone qui aura pour conséquence de figer l’application.

A la fin de chaque click le label affichera que l’exécution est finie

 

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private async Task<string> AsynchroneAttente()
        {
            await Task.Delay(3000);
            return "Traitement asynchrone fini";
        }

        private async Task<string> SynchroneAttente()
        {
            Thread.Sleep(3000);
            return "Traitement synchrone fini";
        }

        private async void btnAsync_Click(object sender, EventArgs e)
        {
            lblResultat.Text = "Traitement asynchrone en cours, vous pouvez encore utiliser l'application.";
            lblResultat.Text = await AsynchroneAttente();
        }

        private async void btnSync_Click(object sender, EventArgs e)
        {
            lblResultat.Text = await SynchroneAttente();
        }
    }

 

Nous indiquons qu’une méthode est asynchrone avec le mot clé async : dans l’exemple nous rendons asynchrone l’évènement click du bouton btnAsync.

Quand nous utilisons une méthode de ce type il est nécessaire d’utiliser le mot clé await qui permet de suspendre l’exécution d’une méthode jusqu’à la fin de l’exécution de la tâche.

Microsoft facilite encore la vie des développeurs…

One Response to “Les méthodes asynchrones en C#5”

  1. David Mouton 19. sept, 2012 at 15 h 18 min #

    Pourquoi utiliser « async » devant btnSync_Click et SynchroneAttente ?
    T’aurais pas publié un peu vie ton article ?

Leave a Reply

*