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(); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |