title: Event handler timing and threading
body: <p>I am still learning C# so please be easy on me. I am thinking about my application I am working on and I can't seem to figure out the best approach. This is not a forms application but rather a console. I am listening to a UDP port. I get UDP messages as fast as 10 times per second. I then look for a trigger in the UDP message. I am using an event handler that is raised each time i get a new UDP packet which will then call methods to parse the packet and look for my trigger. So, i have these questions. </p>
  
  <ol>
  <li>With regard to threading, I assume a thread like my thread that listens to the UDP data should be a permanent thread?</li>
  <li>Also on threading, when I get my trigger and decide to do something, in this case send a message out, i gather that I should use a thread pool each time I want to perform this task?</li>
  <li>On thread pools, I am reading that they are not very high priority,  is that true? If the message I need to send out is critical, can i rely on thread pools?</li>
  <li>With the event handler which is raised when i get a UDP packet and then calls methods, what is the best way to ensure my methods all complete before the next packet/event is raised? At times I see event queue problems because if any of the methods take a bit longer than they should (for exampe writing to a DB) and the next packet comes in 100ms later, you get event queue growth because you cannot consume events in a timely manner. Is there a good way to address this?</li>
  </ol>