C# 运行外部应用程序并跟踪它是否';完成了

C# 运行外部应用程序并跟踪它是否';完成了,c#,C#,我有一个表单,允许用户设置备份解决方案。我希望该选项允许在单击按钮时“立即强制备份”。我的问题是,当前控制该功能的应用程序是一个控制台应用程序,它不显示控制台窗口。有没有办法让我启动应用程序并跟踪其状态,比如提供一个工作屏幕,完成后使用messagebox传递完成的状态?你可以用它做点什么 这是标准错误的第页 // Start the child process. Process p = new Process(); // Redirect the error stream of the chi

我有一个表单,允许用户设置备份解决方案。我希望该选项允许在单击按钮时“立即强制备份”。我的问题是,当前控制该功能的应用程序是一个控制台应用程序,它不显示控制台窗口。有没有办法让我启动应用程序并跟踪其状态,比如提供一个工作屏幕,完成后使用messagebox传递完成的状态?

你可以用它做点什么

这是标准错误的第页

// Start the child process.
Process p = new Process();
// Redirect the error stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = "BackupProgram.exe";
p.Start();
//you could read the standard error from the backup program
//incase something went wrong.. 
string error = p.StandardError.ReadToEnd();
//warning the thread will BLOCK on this method. 
p.WaitForExit();
注意事项:

如果有windows窗体应用程序,则需要正确处理阻塞。如果在主线程上调用
WaitForExit()
,应用程序将挂起

我不认为你可以直接显示身份。除非您编写备份程序以与主程序通信


因此,您可以使用后台工作程序或一些异步编程来实现run-and-wait,然后显示不确定的进度状态。(=)

你可以用它做点什么

这是标准错误的第页

// Start the child process.
Process p = new Process();
// Redirect the error stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.FileName = "BackupProgram.exe";
p.Start();
//you could read the standard error from the backup program
//incase something went wrong.. 
string error = p.StandardError.ReadToEnd();
//warning the thread will BLOCK on this method. 
p.WaitForExit();
注意事项:

如果有windows窗体应用程序,则需要正确处理阻塞。如果在主线程上调用
WaitForExit()
,应用程序将挂起

我不认为你可以直接显示身份。除非您编写备份程序以与主程序通信


因此,您可以使用后台工作程序或一些异步编程来实现run-and-wait,然后显示不确定的进度状态。(=)

只要将您的消息框warn放入您的控制台应用程序,如果这样对您有效的话。这意味着,您的控制台应用程序在后台运行,而不向用户显示控制台。当应用程序结束时,它调用
MessageBox.Show(“我完成了”)
并将消息显示给用户。

只要将消息框警告放入您的控制台应用程序,如果这样做对您有效。这意味着,您的控制台应用程序在后台运行,而不向用户显示控制台。当应用程序结束时,它调用
MessageBox.Show(“我完成了”)
并将消息显示给用户。

+1ed,因为这是正确的方法。。。还有第二种方法是在(!p.HasExited)+1ed时使用
,因为这是正确的方法。。。还有第二种方法是在(!p.HasExited)