Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo ThreadPool.QueueUserWorkItem (WaitCallback, Object)

 

Data di pubblicazione: ottobre 2016

Accoda un metodo da eseguire e specifica un oggetto che contiene i dati che dovranno essere usati dal metodo. Il metodo viene eseguito quando un thread del pool di thread diventa disponibile.

Spazio dei nomi:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

public static bool QueueUserWorkItem(
	WaitCallback callBack,
	object state
)

Parametri

callBack
Type: System.Threading.WaitCallback

WaitCallback che rappresenta il metodo da eseguire.

state
Type: System.Object

Oggetto contenente i dati che devono essere usati dal metodo.

Valore restituito

Type: System.Boolean

true se il metodo viene accodato correttamente. Viene generata l'eccezione NotSupportedException se non è stato possibile accodare l'elemento di lavoro.

Exception Condition
NotSupportedException

Common language runtime (CLR) è ospitato e l'host non supporta questa azione.

ArgumentNullException

callBack è null.

Se il metodo di callback richiede dati complessi, è possibile definire una classe per contenere i dati.

System_CAPS_noteNota

Gli utenti di Visual Basic possono omettere il WaitCallback costruttore e utilizzare semplicemente il AddressOf operatore quando si passa il metodo di callback QueueUserWorkItem. Visual Basic chiama automaticamente il costruttore di delegato corretto.

In .NET Framework versione 2.0, il Thread.CurrentPrincipal valore della proprietà viene propagato ai thread di lavoro in coda tramite il QueueUserWorkItem metodo. Nelle versioni precedenti, le informazioni dell'entità non viene propagate.

Nell'esempio seguente viene illustrato come creare un oggetto che contiene informazioni sulle attività. Viene inoltre illustrato come passare tale oggetto a un'attività in coda per l'esecuzione dal pool di thread.

// 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
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: