title: How to marshal work onto single thread c#
body: <p>I have an app that needs to process some packets from a UDP broadcast, and write the result to a SQL database.
  During intervals the rate of incoming packets gets quite high, and I find that the underlying buffer overflows, even at 8MB, because of the slow database writing.</p>
  
  <p>To solve this I have come up with two options, cache some of the DB writing, 
  and/or marshal the db writes onto another sequentially operating thread. (order of db writes must be preserved).</p>
  
  <p>My question is how to marshal the work most effectively, with built-in structures/features of c#?</p>
  
  <p>Should I just have a synchronized queue, put the delegate work items onto it and have a single thread service it in an event loop?</p>