ThreadPool Demo : ThreadPool « Thread « C# / CSharp Tutorial






using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

  public class Printer
  {
    private object lockToken = new object();

    public void PrintNumbers()
    {
      lock (lockToken)
      {
        Console.WriteLine("-> {0} is executing PrintNumbers()",Thread.CurrentThread.Name);
        for (int i = 0; i < 10; i++)
        {
          Console.Write("{0}, ", i);
          Thread.Sleep(1000);
        }
      }
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Main thread started. ThreadID = {0}",Thread.CurrentThread.ManagedThreadId); 
      Printer p = new Printer();
      WaitCallback workItem = new WaitCallback(PrintTheNumbers);
      for (int i = 0; i < 10; i++)
      {
        ThreadPool.QueueUserWorkItem(workItem, p);
      }
      Console.ReadLine();
    }
    static void PrintTheNumbers(object state)
    {
      Printer task = (Printer)state;
      task.PrintNumbers();
    }
  }








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.