Fixed deadlock scenario in the event dispatcher CRUD API.

This commit is contained in:
MapleWheels
2026-03-24 02:44:08 -04:00
parent 28acf02de0
commit b70b6bf326
@@ -280,7 +280,7 @@ public partial class EventService : IEventService
public void ClearAllEventSubscribers<T>() where T : class, IEvent public void ClearAllEventSubscribers<T>() where T : class, IEvent
{ {
using var lck = _operationsLock.AcquireWriterLock().ConfigureAwait(false).GetAwaiter().GetResult(); using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
IService.CheckDisposed(this); IService.CheckDisposed(this);
_subscribers.TryRemove(typeof(T), out _); _subscribers.TryRemove(typeof(T), out _);
} }
@@ -329,7 +329,7 @@ public partial class EventService : IEventService
public void AddDispatcherEventService(IEventService eventService) public void AddDispatcherEventService(IEventService eventService)
{ {
using var lck = _operationsLock.AcquireWriterLock().ConfigureAwait(false).GetAwaiter().GetResult(); using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
IService.CheckDisposed(this); IService.CheckDisposed(this);
_subscribedEventDispatchers.TryAdd(eventService, eventService); _subscribedEventDispatchers.TryAdd(eventService, eventService);
@@ -337,7 +337,7 @@ public partial class EventService : IEventService
public void RemoveDispatcherEventService(IEventService eventService) public void RemoveDispatcherEventService(IEventService eventService)
{ {
using var lck = _operationsLock.AcquireWriterLock().ConfigureAwait(false).GetAwaiter().GetResult(); using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
IService.CheckDisposed(this); IService.CheckDisposed(this);
_subscribedEventDispatchers.TryRemove(eventService, out _); _subscribedEventDispatchers.TryRemove(eventService, out _);