Всегда блокировать частный объект блокировки:
public class X
{
private readonly Object _lock = new Object();
// ...
lock (_lock)
{
}
Если вы должны синхронизировать доступ к статическим членам класса ,используйте тот же шаблон:
public class X
{
private readonly static Object s_lock = new Object();