new mutex wrapper wiht autorelease

This commit is contained in:
Timerix 2021-09-13 17:03:59 +03:00
parent c1ac878fc8
commit ef6a55b385

29
SafeMutex.cs Normal file
View File

@ -0,0 +1,29 @@
using System;
using System.Threading;
namespace DTLib
{
public class SafeMutex
{
readonly Mutex Mutex = new();
bool isReleased = false;
// тут выполняется отправленный код
public void Execute(Action action, out Exception exception)
{
try
{
exception = null;
Mutex.WaitOne();
action();
Mutex.ReleaseMutex();
isReleased = true;
}
catch (Exception ex)
{
exception = ex;
if (!isReleased) Mutex.ReleaseMutex();
}
}
}
}