Use ThreadPool to implement a hello server : ThreadPool « Thread « C# / CSharp Tutorial






using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

class MainClass
{
  static void serve( Object obj )
  {
    using ( Socket s = (Socket)obj )
    {
      Encoding enc = Encoding.GetEncoding( "ASCII" );
      Byte[] buff = enc.GetBytes( "hello" );
      s.Send( buff );
      s.Shutdown( SocketShutdown.Both );
      s.Close();
    }
  }

  [STAThread]
  static void Main(string[] args)
  {
    using ( Socket svr = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ) )
    {
      svr.Bind( new IPEndPoint( IPAddress.Loopback, 8888 ) );
      svr.Listen( 5 );
      while ( true ) {
        Socket req = svr.Accept();
        ThreadPool.QueueUserWorkItem( new WaitCallback( serve ), req );
      }
    }
  }
}








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.