include::../description-dotnet.adoc[] === Code examples ==== Noncompliant code example [source,csharp,diff-id=1,diff-type=noncompliant] ---- public class Example { private static ReaderWriterLock rwLock = new(); public void AcquireWriterLock() => rwLock.AcquireWriterLock(2000); // Noncompliant, as the lock release is on the callers responsibility public void DoSomething() { // ... } public void ReleaseWriterLock() => rwLock.ReleaseWriterLock(); } ---- ==== Compliant solution [source,csharp,diff-id=1,diff-type=compliant] ---- public class Example { private static ReaderWriterLock rwLock = new(); public void DoSomething() { rwLock.AcquireWriterLock(2000); // Compliant, locks are released in the same method try { // ... } finally { rwLock.ReleaseWriterLock(); } } } ---- include::../resources-dotnet.adoc[] include::../rspecator.adoc[]