From f5718071370a7ac7bed08066dfbe04e048c73e4e Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Mon, 2 Oct 2017 10:00:47 -0400 Subject: [PATCH] Don't throw an exception when attempting to leave an unentered critical section, for consistency with simplsharp --- ICD.Common.Utils.Tests/SafeCriticalSectionTest.cs | 3 +++ ICD.Common.Utils/SafeCriticalSection.Standard.cs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ICD.Common.Utils.Tests/SafeCriticalSectionTest.cs b/ICD.Common.Utils.Tests/SafeCriticalSectionTest.cs index 0485cdd..3c764d0 100644 --- a/ICD.Common.Utils.Tests/SafeCriticalSectionTest.cs +++ b/ICD.Common.Utils.Tests/SafeCriticalSectionTest.cs @@ -32,6 +32,9 @@ namespace ICD.Common.Utils.Tests [Test] public void LeaveTest() { + SafeCriticalSection section = new SafeCriticalSection(); + Assert.DoesNotThrow(() => section.Leave()); + Assert.Inconclusive(); } diff --git a/ICD.Common.Utils/SafeCriticalSection.Standard.cs b/ICD.Common.Utils/SafeCriticalSection.Standard.cs index 9c14105..7b460a6 100644 --- a/ICD.Common.Utils/SafeCriticalSection.Standard.cs +++ b/ICD.Common.Utils/SafeCriticalSection.Standard.cs @@ -20,7 +20,8 @@ namespace ICD.Common.Utils /// public void Leave() { - Monitor.Exit(this); + if (Monitor.IsEntered(this)) + Monitor.Exit(this); } ///