C#: lock vs Monitor
They both are same but each one has some draw back and advantages.
lock is more concise over monitor; it releases the lock from the blocked code even if there is exception generated within blocked code. There could be deadlock with lock if we do not use it correctly, also when we use lock the thread will wait for infinite time to get the lock on object.
On other hand Monitor has feature like ‘TryEnter’ and can wait for the lock for the given time so no infinite wait. With monitor the developer has to more careful about the code/logic to remove the lock using Exit (in both cases exception and normal). Possibility of error.
Normally lock is preferred over Monitor, but it is always developer call based upon the logic need.

