Permet de simplifier et de sécuriser l'utilisation d'un ReaderWriterLockSlim (verrou utilisé pour gérer l'accès à une ressource, en autorisant plusieurs threads pour la lecture ou un accès exclusif en écriture).
Exemples pour clarifier le propos :
//Au lieu de...
ReaderWriterLockSlim rws = new ReaderWriterLockSlim();
rws.EnterReadLock();
try
{
// Traitement...
}
catch (Exception ex)
{
// Traitement de l'exception...
}
finally
{
rws.ExitReadLock();// Et il ne faut pas se tromper sur la méthode à utiliser.
}
// On aura...
cReaderWriterLockSlimEtUsing rw = new cReaderWriterLockSlimEtUsing();
// Utilisation basique pour un verrou en lecture...
using (rw.EnterReadLock())
{
// Traitement...
}// Ici, le verrou sera retiré ('ExitReadLock()' automatique) même s'il y a un 'return' ou une exception dans les accolades.
// Avec un timing sur l'obtention du verrou...
using (var locker = rw.TryEnterReadLock(5000))
{
if (locker.Ok)
{
// Traitement...
}
}// Même commentaire que ci-dessus.