diff --git a/src/WeakEvent/WeakEvent.cs b/src/WeakEvent/WeakEvent.cs index 0312d6e..7c9ff49 100644 --- a/src/WeakEvent/WeakEvent.cs +++ b/src/WeakEvent/WeakEvent.cs @@ -193,13 +193,18 @@ protected async Task PublishAsync(List args, CancellationToken cancella { await _lock.WaitAsync(cancellationToken); - _handlers.RemoveAll(x => !x.IsAlive); + try + { + _handlers.RemoveAll(x => !x.IsAlive); - foreach (var handler in _handlers) + foreach (var handler in _handlers) + { + await handler.InvokeAsync(args, cancellationToken); + } + } + finally { - await handler.InvokeAsync(args, cancellationToken); + _lock.Release(); } - - _lock.Release(); } } \ No newline at end of file