Beispiel #1
0
        public static async Task<bool> TryUsingAsync(this ILockProvider locker, string name, Func<Task> work, TimeSpan? lockTimeout = null, CancellationToken cancellationToken = default(CancellationToken)) {
            using (var l = await locker.AcquireAsync(name, lockTimeout, cancellationToken).AnyContext()) {
                if (l != null) {
                    await work().AnyContext();
                    return true;
                }
            }

            return false;
        }
Beispiel #2
0
        public static async Task<bool> TryUsingAsync(this ILockProvider locker, string name, Func<Task> work, TimeSpan? lockTimeout = null, CancellationToken cancellationToken = default(CancellationToken)) {
            var l = await locker.AcquireAsync(name, lockTimeout, cancellationToken).AnyContext();
            if (l == null)
                return false;

            try {
                await work().AnyContext();
            } finally {
                await l.ReleaseAsync().AnyContext();
            }

            return true;
        }
Beispiel #3
0
 public static Task<ILock> AcquireAsync(this ILockProvider provider, string name, TimeSpan? lockTimeout = null, TimeSpan? acquireTimeout = null) {
     return provider.AcquireAsync(name, lockTimeout, acquireTimeout.ToCancellationToken(acquireTimeout ?? TimeSpan.FromSeconds(30)));
 }
 public static async Task TryUsingAsync(this ILockProvider locker, string name, Func<Task> work, TimeSpan? lockTimeout = null, TimeSpan? acquireTimeout = null) {
     var cancellationToken = acquireTimeout?.ToCancellationToken() ?? default(CancellationToken);
     using (var l = await locker.AcquireAsync(name, lockTimeout, cancellationToken).AnyContext())
         if (l != null)
             await work().AnyContext();
 }
 public static async Task TryUsingAsync(this ILockProvider locker, string name, Func<CancellationToken, Task> work, TimeSpan? lockTimeout = null, CancellationToken cancellationToken = default(CancellationToken)) {
     using (var l = await locker.AcquireAsync(name, lockTimeout, cancellationToken).AnyContext())
         if (l != null)
             await work(cancellationToken).AnyContext();
 }