Я бы хотел - по непонятным причинам, вы не должны сомневаться - запустить блокировку в одном методе и закончить ее другим. Как-то вроде:
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. :)