Browse Source

Don't kill process every time

pull/148/head
Nikita Tsukanov 11 years ago
parent
commit
33630bd2cb
  1. 18
      src/Windows/Perspex.Designer/Comm/ProcessHost.cs

18
src/Windows/Perspex.Designer/Comm/ProcessHost.cs

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

Loading…
Cancel
Save