Dreamine.PLC.Core 1.0.1
Dreamine.PLC.Core 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
AsyncLock.cs
이 파일의 문서화 페이지로 가기
2
11public sealed class AsyncLock
12{
21 private readonly SemaphoreSlim _semaphore = new(1, 1);
22
55 public async Task<IDisposable> LockAsync(CancellationToken cancellationToken = default)
56 {
57 await _semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
58 return new Releaser(_semaphore);
59 }
60
69 private sealed class Releaser : IDisposable
70 {
79 private readonly SemaphoreSlim _semaphore;
88 private bool _disposed;
89
106 public Releaser(SemaphoreSlim semaphore)
107 {
108 _semaphore = semaphore;
109 }
110
119 public void Dispose()
120 {
121 if (_disposed)
122 {
123 return;
124 }
125
126 _disposed = true;
127 _semaphore.Release();
128 }
129 }
130}
async Task< IDisposable > LockAsync(CancellationToken cancellationToken=default)
Definition AsyncLock.cs:55
readonly SemaphoreSlim _semaphore
Definition AsyncLock.cs:21