예제 #1
0
 internal static ILockable CreateConcurrentLock(string key, LockStyle style)
 {
     switch (style)
     {
         case LockStyle.Single: return new ConcurrentSyncLock { Key = key };
         case LockStyle.Mutex: return new ConcurrentMutexLock { Key = key };
         case LockStyle.Database: return new ConcurrentDatabaseLock { Key = key };
         case LockStyle.MSDTC: return new ConcurrentDTCLock { Key = key };
         default:
             {
                 var message = style + " ctor is not implement yet.";
                 Log.Error(message);
                 throw new ArgumentException(message);
             }
     }
 }
예제 #2
0
 public static ILockable AquireConcurrentLock(string key, LockStyle style, TimeSpan mutexTimeout, TimeSpan acquireMutexTimeout)
 {
     var concurrtLock = CreateConcurrentLock(key, style);
     concurrtLock.Acquire(mutexTimeout, acquireMutexTimeout, null);
     return concurrtLock;
 }
예제 #3
0
 public GlobalMutexScope(string key, LockStyle style, TimeSpan cacheTimeout, TimeSpan retryTimeout)
 {
     _concurrentLock = AquireConcurrentLock(key, style, cacheTimeout, retryTimeout);
 }
예제 #4
0
 public static ILockable AquireConcurrentLock(string key, LockStyle style, TimeSpan cacheTimeout)
 {
     return AquireConcurrentLock(key, style, cacheTimeout, AcquireMutexTimeout);
 }
예제 #5
0
 public GlobalMutexScope(string key, LockStyle style)
 {
     _concurrentLock = AquireConcurrentLock(key, style);
 }