 <p>Many of the answers have mentioned using a static readonly lock.</p> <p>However, you really should try to avoid this static lock. It would be easy to create a deadlock where multiple threads are using the static lock.</p> <p>What you could use instead is one of the .net 4 concurrent collections, these do provide some thread synchronisation on your behalf, so that you do not need to use the locking.</p> <p>Take a look at the <code>System.collections.Concurrent</code> namespace. For this example, you could use the <code>ConcurrentBag&lt;T&gt;</code> class.</p>