diff --git a/src/Windows/Perspex.Designer/Comm/ProcessHost.cs b/src/Windows/Perspex.Designer/Comm/ProcessHost.cs index 8870ee3d97..aa0b85ce33 100644 --- a/src/Windows/Perspex.Designer/Comm/ProcessHost.cs +++ b/src/Windows/Perspex.Designer/Comm/ProcessHost.cs @@ -64,16 +64,22 @@ namespace Perspex.Designer.Comm void OnExited(object sender, EventArgs eventArgs) { - _comm.Dispose(); _proc = null; _dispatcher.Post(_ => { - IsAlive = false; - WindowHandle = IntPtr.Zero; - State = "Designer process crashed"; + + HandleExited(); }, null); } + void HandleExited() + { + _comm.Dispose(); + IsAlive = false; + WindowHandle = IntPtr.Zero; + State = "Designer process crashed"; + } + public void Start(string targetExe, string initialXaml) { if (_proc != null) @@ -84,7 +90,7 @@ namespace Perspex.Designer.Comm _proc.Kill(); } catch { } - OnExited(null, null); + HandleExited(); State = "Restarting..."; } @@ -109,11 +115,11 @@ namespace Perspex.Designer.Comm _comm.OnMessage += OnMessage; _comm.Start(); _comm.SendMessage(msg); - return; } catch (Exception e) { State = e.ToString(); + HandleExited(); } IsAlive = true;