Example #1
0
        private Result CreateSuccessResult <TLockCookie>(ISqlSynchronizationStrategy <TLockCookie> strategy, string lockName, TLockCookie lockCookie)
            where TLockCookie : class
        {
            var nonThreadSafeHandle = new ReleaseAction(() => this.ReleaseNoLock(strategy, lockName, lockCookie));
            var threadSafeHandle    = new ThreadSafeReleaseAction(this.mutex, nonThreadSafeHandle);

            this.outstandingHandles.Add(lockName, new HandleReference(threadSafeHandle: threadSafeHandle, nonThreadSafeHandle: nonThreadSafeHandle));
            return(new Result(threadSafeHandle));
        }
Example #2
0
 public HandleReference(ThreadSafeReleaseAction threadSafeHandle, ReleaseAction nonThreadSafeHandle)
 {
     this.ThreadSafeHandle    = new WeakReference <ThreadSafeReleaseAction>(threadSafeHandle);
     this.NonThreadSafeHandle = nonThreadSafeHandle;
 }