Threading Objects and Features

The .NET Framework provides a number of objects that help you create and manage multithreaded applications. WaitHandle objects help you respond to actions taken by other threads, especially when interoperating with unmanaged code. The ThreadPool provides the best basic thread creation and management mechanism for most tasks. Monitor, Mutex, Interlocked, and ReaderWriterLock objects provide mechanisms for synchronizing execution at a low level. The Timer is a flexible way to raise activities at certain intervals, and I/O asynchronous completion uses the thread pool to notify you when your I/O work has completed, freeing you to do other things in the meantime.

In This Section

  • Thread Pooling
    Explains the ThreadPool class, which enables you to request a thread to execute a task without having to do any thread management yourself.
  • I/O Asynchronous Completion
    Describes how I/O asynchronous completion ports use the thread pool to require processing only when an input/output operation completes.
  • Timer
    Explains how to use a Timer to specify a delegate to be called at a specified time.
  • Monitor
    Explains how to use the Monitor class to synchronize access to a member or to build your own thread management types.
  • WaitHandle
    Describes WaitHandle objects, which are managed representations of operating system synchronization handles.
  • ManualResetEvent
    Explains how the ManualResetEvent is signaled when an event occurs, and how to manually reset it.
  • AutoResetEvent
    Explains how the AutoResetEvent is signaled when an event occurs.
  • Mutex
    Explains how to use a Mutex to synchronize access to an object or to build your own synchronization mechanisms.
  • Interlocked
    Explains how to use the Interlocked class to increment or decrement a value and store the value in a single atomic operation.
  • ReaderWriterLock
    Defines a lock that implements single-writer/multiple-reader semantics.
  • Thread
    Provides reference documentation for the Thread class, which represents a managed thread, whether it came from unmanaged code or was created in a managed application.