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