Я просматриваю какой-то код, написанный консультантом, и хотя уже появились десятки красных флажков, я не могу уложить в голове следующий фрагмент:
private void foo()
{
if (InvokeRequired)
{
lock (new object())
{
if (m_bar!= null)
Invoke(new fooDelegate(foo), new object[] { });
}
}
else
{
if(OnBazChanged != null)
OnBazChanged();
}
}
Что здесь делает блокировка (нового объекта ())? Не должно иметь никакого эффекта, так как он всегда блокирует другой объект, но этот тип блокировки сохраняется во всем коде, даже в не -копировании -и -вставленных частях. Это какой-то особый случай в языке C #, который скомпилирован во что-то, о чем я не знаю, или программист просто принял какой-то карго-культ, который когда-то работал?