<p>I understand the main function of the lock key word from MSDN</p>

<blockquote>
  <p>lock Statement (C# Reference)</p>
  
  <p>The lock keyword marks a statement
  block as a critical section by
  obtaining the mutual-exclusion lock
  for a given object, executing a
  statement, and then releasing the
  lock.</p>
</blockquote>

<p>When should the lock be used?  </p>

<p>For instance it makes sense with multi-threaded applications because it protects the data.  But is it necessary when the application does not spin off any other threads?</p>

<p>Is there performance issues with using lock?</p>

<p>I have just inherited an application that is using lock everywhere, and it is single threaded and I want to know should I leave them in, are they even necessary?</p>

<p>Please note this is more of a general knowledge question, the application speed is fine, I want to know if that is a good design pattern to follow in the future or should this be avoided unless absolutely needed.</p>

Generally speaking if your application is single threaded, you're not going to get much use out of the lock statement. Not knowing your application exactly, I don't know if they're useful or not - but I suspect not. Further, if you're application is using lock everywhere I don't know that I would feel all that confident about it working in a multi-threaded  environment anyways - did the original developer
actually
know how to develop multi-threaded code, or did they just add lock statements everywhere in the vague hope that that would do the trick?