Comment faire pour envoyer un élément de travail dans le pool de threads à l’aide de Visual C#

Cet article fait référence à l’espace de noms bibliothèque de classes Microsoft.NET Framework suivant :
  • System.Threading

DANS CETTE TÂCHE.

Résumé

Cet article pas à pas vous indique comment présenter une méthode pour le pool de threads pour l’exécution.

Dans l’environnement .NET, chaque processus a un pool de threads que vous pouvez utiliser pour exécuter des méthodes de façon asynchrone.

Configuration requise


La liste suivante met en évidence les matériel, logiciel et infrastructure réseau recommandés ainsi que les service packs qui sont requis :
  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
Cet article suppose que vous maîtrisez les sujets suivants :

  • Visual C# programming language

Créer une Application Visual C# qui utilise le Pool de threads

  1. Démarrez Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. Créer un nouveau projet d’Application Windows Visual C# nommé PoolDemo.
  3. Utilisez la boîte à outils pour ajouter un contrôle bouton au formulaire. Le nom par défaut pour le contrôle Button est button1.
  4. Avec le bouton droit de la forme, puis cliquez sur Afficher le Code.
  5. Collez la directive using suivante après les directives existantes à l’aide de , mais avant la déclaration de l’espace de noms PoolDemo :
    using System.Threading;
  6. Revenez en mode Design et double-cliquez sur button1. Collez le code suivant dans le Gestionnaire d’événements button1_Click :
    private void button1_Click(object sender, System.EventArgs e){
    WaitCallback wcb = new WaitCallback(GetSysDirSize);
    try
    {
    ThreadPool.QueueUserWorkItem(wcb);
    MessageBox.Show("The work item has been placed on the queue");
    }
    catch (Exception ex)
    {
    MessageBox.Show("Error: " + ex.Message);
    }
    }

  7. Collez le code suivant dans le corps de la classe Form1 . La méthode GetSysDirSize calcule le nombre total d’octets qui sont stockés dans le répertoire système. GetSysDirSize appelle une autre méthode nommée DirSize pour effectuer le calcul.

    Remarque: cette tâche peut prendre un certain temps à s’exécuter.
    private void GetSysDirSize(object state){
    long total_length = DirSize(Environment.SystemDirectory);
    this.Text = total_length.ToString();
    }

    private long DirSize(string path)
    {
    long sz = 0;
    System.IO.DirectoryInfo d = new System.IO.DirectoryInfo(path);

    // List files.
    foreach(System.IO.FileInfo f in d.GetFiles())
    {
    sz += f.Length;
    }

    // Recurse into directories.
    foreach(System.IO.DirectoryInfo dx in d.GetDirectories())
    {
    sz += DirSize(dx.FullName);
    }

    return sz;
    }

Test de l’exemple

  1. Appuyez sur CTRL + F5 pour exécuter l’application.
  2. Lorsque le formulaire s’affiche, cliquez sur le bouton. Lorsque la boîte de message de que l’élément de travail a été placé dans la file d’attente s’affiche, cliquez sur OK pour fermer la boîte de message et revenir à l’écran principal. Après un court délai, la taille totale du fichier dans le répertoire système est affiché dans la légende du formulaire. La longueur de ce délai dépend de la vitesse de votre ordinateur et le nombre de fichiers dans le répertoire système. Le calcul de la taille du fichier a lieu sur un thread dans le pool de threads.
Propriétés

ID d'article : 315460 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Commentaires