Использование блокировки таким способом часто не рекомендуется, так как рекомендуется использовать специальное поле блокировки (переменная члена класса). Выделенное поле блокировки имеет тип Object
и обычно выглядит так:
private object _pendingTransactionLock = new object();
Если сам объект имеет некоторую осведомленность о потоке, эта переменная блокировки может принадлежать классу реализации _pendingTransaction
. В противном случае он может принадлежать вместе с _pendingTransaction
в классе объявления поля.
Вы не говорите, что типа _pendingTransaction
. Если это встроенный класс коллекции, который предоставляет свойство SyncRoot
, это может быть хорошим выбором для блокировки.
См. Выбор Джона Скита, что заблокировать.