title: C# keep event handling thread alive in CPU friendly way
body: <p>I would like to run 10 threads in parallel. Each thread contains code that handles serial port communication (Using the 'SerialPort' class). Some of the features are:</p>
  
  <ol>
  <li>Code for handling the event that is raised when the RS232 device returns data.</li>
  <li>Code for handling Timer events that are raised when the RS232 device does not return data within a predefined time frame.</li>
  </ol>
  
  <p>As you can see each thread handles some asynchronous events initialized and started from the thread itself. So the thread needs to keep itself alive until all events have been raised and processed. Based on the received data from the RS232 device the thread knows when the work is done and the thread can kill itself. </p>
  
  <p>Now my question: I would like to avoid using an infinite loop to keep the thread alive to avoid using a lot of CPU resources on nothing. Any idea how to do this and also avoiding that the thread blocks/stops itself?.</p>