Мне нравится ярлык на C # из lock(myLock){ /* do stuff */}
. Есть ли эквивалент для блокировки чтения / записи? (В частности, ReaderWriterLockSlim.) Прямо сейчас я использую следующий пользовательский метод, который, как мне кажется, работает, но это немного раздражает, потому что я должен передать свое действие как анонимную функцию, и я бы предпочел использовать стандартный механизм блокировки, если это возможно .
void bool DoWithWriteLock(ReaderWriterLockSlim RWLock, int TimeOut, Action Fn)
{
bool holdingLock = false;
try
{
if (RWLock.TryEnterWriteLock(TimeOut))
{
holdingLock = true;
Fn();
}
}
finally
{
if (holdingLock)
{
RWLock.ExitWriteLock();
}
}
return holdingLock;
}