Gewusst wie: Übergabe eine Arbeitsaufgabe an den Threadpool mit Visual C#

Dieser Artikel bezieht sich auf den folgenden Namespace für Microsoft.NET Framework-Klassenbibliothek:
  • System.Threading

IN DIESER AUFGABE

Zusammenfassung

Dieser Artikel veranschaulicht, wie eine Methode zur Ausführung an den Threadpool senden.

In der hat jeder Prozess einen Threadpool mit Methoden asynchron ausgeführt.

Voraussetzungen


Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks auf, die benötigt werden:
  • Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005
Es wird vorausgesetzt, dass Sie mit folgenden Themen vertraut sind:

  • Die Visual C# Programmiersprache

Erstellen einer Visual C#-Anwendung, die den Threadpool verwendet

  1. Starten Sie Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005.
  2. Erstellen Sie ein neues Visual C# Windows-Anwendung PoolDemo.
  3. Mithilfe der Toolbox ein Button -Steuerelement zum Formular hinzuzufügen. Der Standardname für das Button -Steuerelement ist button1.
  4. Mit der rechten Maustaste in des Formulars und klicken Sie dann auf Code anzeigen.
  5. Fügen Sie die folgende using -Direktive nach Richtlinien verwenden , aber vor der Deklaration des PoolDemo -Namespace:
    using System.Threading;
  6. Wechseln Sie zur Entwurfsansicht, und doppelklicken Sie auf button1. Fügen Sie im button1_Click -Ereignishandler folgenden Code ein:
    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. Fügen Sie folgenden Code im Rumpf der Form1 -Klasse. Die GetSysDirSize -Methode berechnet die Gesamtzahl der Bytes, die im Systemverzeichnis gespeichert sind. GetSysDirSize Ruft eine andere Methode mit dem Namen DirSize die Berechnung durchgeführt.

    Hinweis: Dieser Vorgang dauert einige Zeit in Anspruch.
    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;
    }

Testen des Beispiels

  1. Drücken Sie STRG + F5, um die Anwendung auszuführen.
  2. Wenn das Formular angezeigt wird, klicken Sie auf. Wenn das Arbeitselement in der Warteschlange platziert wurde -Meldungsfeld angezeigt wird, klicken Sie auf OK , um das Meldungsfeld zu schließen und zum Hauptformular zurückzukehren. Nach einer kurzen Verzögerung wird die Gesamtgröße im Verzeichnis Systems in der Beschriftung des Formulars angezeigt. Die Länge der Verzögerung hängt von der Geschwindigkeit des Computers und die Anzahl der Dateien im Systemverzeichnis. Berechnung der Dateien erfolgt in einem Thread im Threadpool.
Eigenschaften

Artikelnummer: 315460 – Letzte Überarbeitung: 21.01.2017 – Revision: 1

Feedback