From 7600c237d447a8cb5409ea73570ab1f24d02c0a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joonatan=20Uusv=C3=A4li?= Date: Wed, 21 May 2025 13:22:35 +0300 Subject: [PATCH] Run all event handlers inside try-block. Release lock in finally-block. --- src/WeakEvent/WeakEvent.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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