From ef17d2e595d67dda24b648bca45097c9d369faa3 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 28 May 2026 16:21:24 -0400 Subject: [PATCH] fix(adminui): picker DisposeAsync is fire-and-forget per design --- .../Shared/Drivers/Pickers/GalaxyAddressPickerBody.razor | 6 ++++-- .../Drivers/Pickers/OpcUaClientAddressPickerBody.razor | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/GalaxyAddressPickerBody.razor b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/GalaxyAddressPickerBody.razor index fd546f12..8fd1e4e3 100644 --- a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/GalaxyAddressPickerBody.razor +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/GalaxyAddressPickerBody.razor @@ -189,11 +189,13 @@ private string TruncatedError() => _openError is null ? "" : (_openError.Length > 60 ? _openError[..60] + "…" : _openError); - public async ValueTask DisposeAsync() + public ValueTask DisposeAsync() { if (_token != Guid.Empty) { - try { await BrowserService.CloseAsync(_token); } catch { /* circuit teardown */ } + // Fire-and-forget — don't block circuit teardown on a slow remote. + _ = BrowserService.CloseAsync(_token); } + return ValueTask.CompletedTask; } } diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/OpcUaClientAddressPickerBody.razor b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/OpcUaClientAddressPickerBody.razor index 1d04cf1c..01168f50 100644 --- a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/OpcUaClientAddressPickerBody.razor +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Shared/Drivers/Pickers/OpcUaClientAddressPickerBody.razor @@ -112,11 +112,13 @@ private string TruncatedError() => _openError is null ? "" : (_openError.Length > 60 ? _openError[..60] + "…" : _openError); - public async ValueTask DisposeAsync() + public ValueTask DisposeAsync() { if (_token != Guid.Empty) { - try { await BrowserService.CloseAsync(_token); } catch { /* circuit teardown */ } + // Fire-and-forget — don't block circuit teardown on a slow remote. + _ = BrowserService.CloseAsync(_token); } + return ValueTask.CompletedTask; } }