Added a global mutex (not used yet) and moved around the code for loggin in since I suspect the Get Roles call is using deffered execution on the database causing the lock when attempting to access straight away #2750

This commit is contained in:
Jamie Rees 2019-03-11 08:33:16 +00:00
commit 1322076aa6
2 changed files with 41 additions and 3 deletions

View file

@ -0,0 +1,38 @@
using System;
using System.Threading;
namespace Ombi.Helpers
{
public static class GlobalMutex
{
public static T Lock<T>(Func<T> func)
{
const string mutexId = "Global\\OMBI";
using (var mutex = new Mutex(false, mutexId, out __))
{
var hasHandle = false;
try
{
try
{
hasHandle = mutex.WaitOne(5000, false);
if (hasHandle == false)
throw new TimeoutException("Timeout waiting for exclusive access");
}
catch (AbandonedMutexException)
{
hasHandle = true;
}
return func();
}
finally
{
if (hasHandle)
mutex.ReleaseMutex();
}
}
}
}
}