Scheduling work to occur on the thread-pool : ThreadPool « Thread « C# / CSharp Tutorial





using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;

public class MainClass
{
    public static void Main()
    {
        using (ManualResetEvent mre = new ManualResetEvent(false))
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(MyThreadPoolWorker), mre);
            
            Console.WriteLine("Continuing work on the main thread: {0}",
                Thread.CurrentThread.ManagedThreadId);

            mre.WaitOne();
        }
        
    }
    private static void MyThreadPoolWorker(object state)
    {
        ManualResetEvent mre = (ManualResetEvent)state;

        Console.WriteLine("Work occurring on the thread-pool: {0}",
            Thread.CurrentThread.ManagedThreadId);

        // set the event to let our caller know we're done:
        mre.Set();
    }

}
Work occurring on the thread-pool: 3
Continuing work on the main thread: 1










20.28.ThreadPool
20.28.1.Thread Pool Example
20.28.2.Use ThreadPool
20.28.3.Using the thread pool and no arguments
20.28.4.Using the thread pool and providing an argument
20.28.5.Use ThreadPool to implement a hello server
20.28.6.Use the system thread pool
20.28.7.Registering wait callbacks for events
20.28.8.Available worker/IO threads
20.28.9.Max worker/IO threads in a ThreadPool
20.28.10.Min worker/IO threads in a ThreadPool
20.28.11.Scheduling work to occur on the thread-pool
20.28.12.ThreadPool Demo
20.28.13.Using ThreadPool Instead of Instantiating Threads Explicitly
20.28.14.Queuing a task for execution by ThreadPool threads, with the RegisterWaitForSingleObject method.
20.28.15.QueueUserWorkItem and RegisterWaitForSingleObject: Queue a task, represented by the ThreadProc method, using the QueueUserWorkItem method.
20.28.16.Canceling a queued task with RegisteredWaitHandle.
20.28.17.Use the QueueUserWorkItem method to queue a task and supply the data for the task.