From bfd51e64f710b049e65f5bfa8ef632840303b87f Mon Sep 17 00:00:00 2001 From: Pierre Arnaud Date: Sat, 31 Jan 2026 15:37:52 +0100 Subject: [PATCH] Fix dead-lock on shutdown --- .../RuntimeControllerAspNetDotnetFirstSignalR.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirstSignalR.cs b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirstSignalR.cs index 343c0ac..5a06160 100644 --- a/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirstSignalR.cs +++ b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirstSignalR.cs @@ -163,7 +163,12 @@ namespace ElectronNET.AspNet.Runtime private void SignalRFacade_Disconnected(object sender, EventArgs e) { - this.HandleStopped(); + // IMPORTANT: Do NOT call HandleStopped synchronously here! + // This event fires from within SignalR's OnDisconnectedAsync, and calling + // StopApplication() synchronously causes a deadlock: the host waits for + // OnDisconnectedAsync to complete, but we're waiting for the host to stop. + // Fire and forget to break the deadlock. + _ = Task.Run(() => this.HandleStopped()); } private void ElectronProcess_Stopped(object sender, EventArgs e)