Fixed deadlock scenario caused by unsubscribing during an event.
This commit is contained in:
@@ -264,7 +264,7 @@ public partial class EventService : IEventService
|
|||||||
public void Unsubscribe<T>(T subscriber) where T : class, IEvent
|
public void Unsubscribe<T>(T subscriber) where T : class, IEvent
|
||||||
{
|
{
|
||||||
Guard.IsNotNull(subscriber, nameof(subscriber));
|
Guard.IsNotNull(subscriber, nameof(subscriber));
|
||||||
using var lck = _operationsLock.AcquireWriterLock().ConfigureAwait(false).GetAwaiter().GetResult();
|
using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
|
||||||
IService.CheckDisposed(this);
|
IService.CheckDisposed(this);
|
||||||
|
|
||||||
if (!_subscribers.TryGetValue(typeof(T), out var evtSubscribers))
|
if (!_subscribers.TryGetValue(typeof(T), out var evtSubscribers))
|
||||||
|
|||||||
Reference in New Issue
Block a user