0

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

4

2 回答 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 回答