У меня есть класс, который управляет совместно используемым ресурсом. Теперь, так как доступ к ресурсу зависит от многих параметров, этот класс инстанцируют и располагают несколько раз во время нормального осуществления программы.
Совместно используемый ресурс не поддерживает параллелизм, таким образом, некоторая блокировка необходима. Первая вещь, которая вошла в мой ум, имеет статический экземпляр в классе, и получите, соединяет его, как это:
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
Это имеет смысл, или Вы использовали бы другой подход?
Да, вы можете использовать статическую переменную для защиты общего ресурса.
Вы также можете использовать typeof (class) как выражение внутри lock . См. Предупреждение ниже, однако, со статической переменной она, по крайней мере, более защищена в пределах вашего класса.