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. This statement takes the following form Object thisLock = new Object(); lock (thisLock) { // Critical code section. } For more information, see Thread Synchronization (C# Programming Guide) .(MSDN link) The lock keyword ensures that one thread does not enter a critical section of code while another thread is in the critical section. If another thread tries to enter a locked code, it will wait, block, until the object is released. The section Threading (C# Programming Guide)(MSDN LINK) discusses threading. The lock keyword calls Enter at the start of the block and Exit at the end of the block. In general, avoid locking on a public type, or instances beyond your code's control. The common constructs lock (this) , lock (typeof (MyType)) , and lock ("myLock") viola...