Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

ThreadPool.QueueUserWorkItem-Methode: (WaitCallback, Object)

 

Veröffentlicht: Oktober 2016

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
Type: System.Threading.WaitCallback

Ein WaitCallback, der die auszuführende Methode darstellt.

state
Type: System.Object

Ein Objekt, das die von der Methode zu verwendenden Daten enthält.

Rückgabewert

Type: 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.

Exception Condition
NotSupportedException

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

ArgumentNullException

callBack ist null.

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

System_CAPS_noteHinweis

Visual Basic-Benutzer können Auslassen der WaitCallback -Konstruktor, und verwenden Sie einfach die AddressOf beim Übergeben der Rückrufmethode, um den Operator QueueUserWorkItem. Visual Basic ruft automatisch den richtigen Delegatkonstruktor.

In .NET Framework, Version 2.0 die Thread.CurrentPrincipal -Eigenschaftswert an Arbeitsthreads weitergegeben, in der Warteschlange mit der QueueUserWorkItem Methode. In früheren Versionen werden die wichtigsten Informationen nicht übermittelt.

Im folgenden Beispiel wird veranschaulicht, wie ein Objekt erstellt, die Informationen zum Vorgang enthält. Es wird veranschaulicht, wie dieses Objekt an eine Aufgabe, die in die Warteschlange wird vom Threadpool übergeben wird.

// 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); 
    }
}
// The example displays output like the following:
//       Main thread does some work, then sleeps.
//       This report displays the number 42.
//       Main thread exits.

.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: