Вы имеете в виду AcquireReaderLock(-1)
/ AcquireWriterLock(-1)
или подобное? Это предполагает, что блокировка установлена - в этом случае исправьте тот код, который удерживает блокировку (запись) в данный момент. Если задержка буквально с классом блокировки, то возможно ReaderWriterLockSlim
будет иметь меньше служебных данных. lock
действительно будет проще (следовательно, дешевле), но не допускает такой же степени детализации - это по сути блокировка мьютекса, поэтому только один поток может играть с объектом. Сравните блокировку читателя / писателя, которая позволяет одному писателю NAND несколько читателей.
Если честно, это звучит так же просто, как "иногда какой-то код блокирует запись (блокируя других вызывающих) и занимает некоторое время для завершения". Нахождение код-нарушитель - это черное искусство, но оно не имеет ничего общего с самим замком.