@@ -11,7 +11,7 @@ public sealed class AsyncLock
1111{
1212 public AsyncLock ( )
1313 {
14- _syncObj = _waitingWriters ;
14+ SyncObj = _waitingWriters ;
1515
1616 _readerReleaserTask = Task . FromResult ( new ReaderReleaser ( this , true ) ) ;
1717 _writerReleaserTask = Task . FromResult ( new WriterReleaser ( this , true ) ) ;
@@ -20,10 +20,10 @@ public AsyncLock()
2020 internal AsyncLock ( object syncObject )
2121 : this ( )
2222 {
23- _syncObj = syncObject ;
23+ SyncObj = syncObject ;
2424 }
2525
26- private readonly object _syncObj ;
26+ internal readonly object SyncObj ;
2727
2828 private readonly Queue < TaskCompletionSource < ReaderReleaser > > _waitingReaders = new Queue < TaskCompletionSource < ReaderReleaser > > ( ) ;
2929 private readonly Queue < TaskCompletionSource < WriterReleaser > > _waitingWriters = new Queue < TaskCompletionSource < WriterReleaser > > ( ) ;
@@ -86,7 +86,7 @@ public Task<ReaderReleaser> ReaderLockAsync(CancellationToken cancellation = def
8686 return Task . FromCanceled < ReaderReleaser > ( cancellation ) ;
8787 }
8888
89- lock ( _syncObj )
89+ lock ( SyncObj )
9090 {
9191 //no running or waiting write lock?
9292 if ( _isWriterRunning == false && _waitingWriters . Count == 0 )
@@ -110,7 +110,7 @@ public Task<WriterReleaser> WriterLockAsync(CancellationToken cancellation = def
110110 return Task . FromCanceled < WriterReleaser > ( cancellation ) ;
111111 }
112112
113- lock ( _syncObj )
113+ lock ( SyncObj )
114114 {
115115 if ( _isWriterRunning == false && _readersRunning == 0 )
116116 {
@@ -126,9 +126,9 @@ public Task<WriterReleaser> WriterLockAsync(CancellationToken cancellation = def
126126 }
127127 }
128128
129- internal void Release ( AsyncLockType type )
129+ internal void Release ( AsyncLockType type , bool sendReleaseEvent = true )
130130 {
131- lock ( _syncObj )
131+ lock ( SyncObj )
132132 {
133133 try
134134 {
@@ -143,7 +143,7 @@ internal void Release(AsyncLockType type)
143143 }
144144 finally
145145 {
146- if ( State == AsyncLockState . Idle )
146+ if ( sendReleaseEvent && State == AsyncLockState . Idle )
147147 {
148148 Released ? . Invoke ( this ) ;
149149 }
0 commit comments