我有一个允许用户设置备份解决方案的表单。我希望在单击按钮时允许“立即强制备份”的选项。我的问题是,当前控制该功能的应用程序是控制台应用程序,它不显示控制台窗口。有没有办法让我启动应用程序并跟踪它的状态,比如给出一个工作屏幕,当它完成时使用消息框来传递完成状态?
问问题
60 次
2 回答
3
你也许可以用Process.WaitForExit()做点什么。
这是来自这个关于标准错误的 msdn页面。
// 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()
主线程,您的应用程序将挂起。
我认为您不能直接显示状态。除非您编写备份程序以与主程序通信。
因此,您可以使用后台工作程序或一些异步编程来实现运行和等待,然后您可以显示不确定的进度状态。( progressBar1.Style = ProgressBarStyle.Marquee )
于 2013-04-19T06:22:42.540 回答
0
只需将您的消息框警告放入您的 ConsoleApplication 中,如果这对您有用。这意味着,您的控制台应用程序在后台运行,而不会向用户显示控制台。当应用程序结束时,它会调用MessageBox.Show("I'm done.")
并向用户显示消息。
于 2013-04-19T06:37:59.943 回答