If some lock statement on the same object is used only in one place of the code, it is functionally equivalent to the situation when no lock is used. Isn't this obvious?
Locks implement mutial exclusion
mechanism which works for only for identical lock object. If two or more blocks of code are executed under
statement with the same lock object, the execution of all these blocks is mutually exclusive
. It is not important if this is the same block of code or different block executed under the
statement with the same lock object; in all cases, each of the blocks can be executed by only one thread at a time, other threads being delayed.
For some background on the topic, please see: http://en.wikipedia.org/wiki/Mutual_exclusion
See also: http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx