Candy.Client.Utilities.AsyncLock.LockAsync C# (CSharp) Method

LockAsync() public method

ロックを確保するまで非同期に待機します。
public LockAsync ( ) : Task
return Task
        public Task<IDisposable> LockAsync()
        {
            var wait = _semaphore.WaitAsync();
            if (wait.IsCompleted)
            {
                return _releaser;
            }
            else
            {
                return wait.ContinueWith(
                    (_, state) => (IDisposable)state,
                    _releaser.Result,
                    CancellationToken.None,
                    TaskContinuationOptions.ExecuteSynchronously,
                    TaskScheduler.Default
                    );
            }
        }