Я бы хотел - по непонятным причинам не задавать вопросов - запустить блокировку в одном методе и завершить ее в другом. Как-то так:
object mutex = new object();
void Main(string[] args)
{
lock (mutex)
{
doThings();
}
}
будет иметь такое же поведение, как:
object mutex = new object();
void Main(string[] args)
{
Foo();
doThings();
Bar();
}
void Foo()
{
startLock(mutex);
}
void Bar()
{
endlock(mutex);
}
Проблема в том, что ключевое слово lock работает в синтаксисе блока, конечно. Я знаю, что замки не предназначены для такого использования, но я более чем открыт для творческих и хакерских решений S / O. :)