namespace WIDESEAWCS_Tasks
|
{
|
public static class MemoryLockManager
|
{
|
private static Dictionary<string, SemaphoreSlim> _locks = new Dictionary<string, SemaphoreSlim>();
|
|
/// <summary>
|
/// 开启锁
|
/// </summary>
|
/// <param name="jobName"></param>
|
/// <returns></returns>
|
public static bool TryAcquireLock(string jobName)
|
{
|
if (!_locks.ContainsKey(jobName))
|
{
|
_locks[jobName] = new SemaphoreSlim(1, 1);
|
}
|
try
|
{
|
return _locks[jobName].Wait(0);
|
}
|
catch (Exception)
|
{
|
return false;
|
}
|
}
|
|
/// <summary>
|
/// 释放锁
|
/// </summary>
|
/// <param name="jobName"></param>
|
public static void ReleaseLock(string jobName)
|
{
|
if (_locks.ContainsKey(jobName))
|
{
|
_locks[jobName].Release();
|
}
|
}
|
}
|
}
|