(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ThreadPool.QueueUserWorkItem-Methode (WaitCallback, Object)

Fügt der Warteschlange eine auszuführende Methode hinzu und gibt ein Objekt an, das die von der Methode zu verwendenden Daten enthält. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.

Namespace:  System.Threading
Assembly:  mscorlib (in mscorlib.dll)

public static bool QueueUserWorkItem(
	WaitCallback callBack,
	Object state
)

Parameter

callBack
Typ: System.Threading.WaitCallback
Ein WaitCallback, der die auszuführende Methode darstellt.
state
Typ: System.Object
Ein Objekt, das die von der Methode zu verwendenden Daten enthält.

Rückgabewert

Typ: System.Boolean
true , wenn die Methode erfolgreich in die Warteschlange gestellt wurde. NotSupportedException wird ausgelöst, wenn die Arbeitsaufgabe nicht in die Warteschlange gestellt werden konnte.

AusnahmeBedingung
NotSupportedException

Die Common Language Runtime (CLR) wird gehostet, und der Host unterstützt diese Aktion nicht.

ArgumentNullException

callBack ist null.

Wenn die Rückrufmethode komplexere Daten erfordert, können Sie eine Klasse definieren, die die Daten enthält.

HinweisHinweis

Benutzer von Visual Basic können den WaitCallback-Konstruktor auslassen und stattdessen beim Übergeben der Rückrufmethode an QueueUserWorkItem den Operator AddressOf verwenden. Visual Basic ruft automatisch den richtigen Delegatkonstruktor auf.

Versionsinformationen

In .NET Framework, Version 2.0, wird der Thread.CurrentPrincipal-Eigenschaftswert an Arbeitsthreads weitergegeben, die mithilfe der QueueUserWorkItem-Methode in die Warteschlange gestellt wurden. In früheren Versionen werden die Prinzipalinformationen nicht weitergegeben.

Im folgenden Beispiel wird das Erstellen eines Objekts veranschaulicht, das Aufgabeninformationen enthält. Außerdem wird gezeigt, wie das Objekt an eine Aufgabe übergeben wird, die für die Ausführung im Threadpool in die Warteschlange gestellt wurde.


// This example shows how to create an object containing task
// information, and pass that object to a task queued for
// execution by the thread pool.
using System;
using System.Threading;

// TaskInfo holds state information for a task that will be
// executed by a ThreadPool thread.
public class TaskInfo 
    {
    // State information for the task.  These members
    // can be implemented as read-only properties, read/write
    // properties with validation, and so on, as required.
    public string Boilerplate;
    public int Value;

    // Public constructor provides an easy way to supply all
    // the information needed for the task.
    public TaskInfo(string text, int number) {
        Boilerplate = text;
        Value = number;
    }
}

public class Example {
    public static void Main()
    {
        // Create an object containing the information needed
        // for the task.
        TaskInfo ti = new TaskInfo("This report displays the number {0}.", 42);

        // Queue the task and data.
        ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), ti);

        Console.WriteLine("Main thread does some work, then sleeps.");

        // If you comment out the Sleep, the main thread exits before
        // the ThreadPool task has a chance to run.  ThreadPool uses 
        // background threads, which do not keep the application 
        // running.  (This is a simple example of a race condition.)
        Thread.Sleep(1000);

        Console.WriteLine("Main thread exits.");
    }

    // The thread procedure performs the independent task, in this case
    // formatting and printing a very simple report.
    //
    static void ThreadProc(Object stateInfo) 
    {
        TaskInfo ti = (TaskInfo) stateInfo;
        Console.WriteLine(ti.Boilerplate, ti.Value); 
    }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft