示例#1
0
        protected void OnProcessExited(object sender, ProcessExitedArgs e)
        {
            var handler = Exited;

            if (handler != null)
            {
                Trace.TraceInformation("The process for application {0} has exited unexpectedly", Identity);
                handler(this, new ApplicationExitedArgs {
                    Message = e.Message, AppIdentity = Identity
                });
            }
        }
示例#2
0
        // Called to start the launched process in a secondary thread
        private void Start()
        {
            try {
                // Attempt to launch the executable
                Logger.Log($"[Launcher] Launching: {process.StartInfo.FileName} {process.StartInfo.Arguments}");
                process.Start();

                // Begin reading from process's stdout/err
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();

                // Wait for executable to exit
                Logger.Log("[Launcher] Process Started");
                process.WaitForExit();
                Running = false;

                // Prep exit event args
                ProcessExitedArgs exitArgs = new ProcessExitedArgs();
                if (Error != null)
                {
                    exitArgs.Errored = true;
                    exitArgs.Error   = Error;
                }

                // Emit exit event
                ProcessExited?.Invoke(this, exitArgs);
            } catch (Exception ex) {
                Running = false;
                Error   = ex;

                Logger.Log($"[Launcher] Process failed to start: {ex.Message}");

                // Prep exit event args
                ProcessExitedArgs exitArgs = new ProcessExitedArgs();
                exitArgs.Errored = true;
                exitArgs.Error   = Error;

                // Emit exit event
                ProcessExited?.Invoke(this, exitArgs);
            }
        }