Me gusta el acceso directo en C# de lock(myLock){ /* do stuff */}
. ¿Hay un equivalente para los bloqueos de lectura/escritura? (Específicamente ReaderWriterLockSlim.) En este momento, utilizo el siguiente método personalizado, que creo que funciona, pero es un poco molesto porque tengo que pasar mi acción como una función anónima, y preferiría usar un mecanismo de bloqueo estándar si es posible .¿Hay un equivalente de la instrucción lock {} para 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;
}
El intento * * declaración está en el lugar equivocado. Ponlo * después de * TryEnterWriteLock(). No más necesidad de una variable, un atajo no tiene sentido. –