【问题标题】:Returning to a menu after an external application is done or cancelled完成或取消外部应用程序后返回菜单
【发布时间】:2012-06-14 18:10:10
【问题描述】:

我正在编写一个引用多个外部实用程序和防病毒应用程序的界面。在这种情况下,我有一个菜单,其中包含 Malwarebytes、CCleaner、Windirstat 等选项。

我的问题是,如果你取消外部程序,我会收到一个错误,整个界面会出现调试错误“操作被用户取消”。

我需要恢复主界面,以便在我取消或完成时可以选择另一个工具。

到目前为止,这是我的代码的主要部分。请记住,我已经用 c# 编程了 3 天了:

private void ccleanerButton_Click(object sender, EventArgs e)
{
    //set p as new process
    Process p = new Process();
    //select the process file name
    p.StartInfo.FileName = "ccsetup.exe";
    //Start things up
    p.Start();          
}

当我调试时(在 Visual Studio C# 2010 Express 中),“p.Start();”是突出显示的内容。如您所知,这是简单的流程调用。我在谷歌、这个论坛和其他网站上到处都是,但我似乎没有提出正确的问题。

【问题讨论】:

  • 这是一个可能有帮助的 msdn 链接:support.microsoft.com/kb/305369。
  • 能否请您附上您收到的完整错误消息?

标签: c# .net windows process exit


【解决方案1】:

关闭进程的正确方法是使用CloseMainWindow(如果您要关闭主 GUI 窗口和所有子窗口)或 Kill(如果您要关闭 GUI 的子窗口)。

【讨论】:

  • 感谢您的 cmets,但不高兴。 Tergiver – 系统可以很好地找到该文件(我将 .exe 导入 Visual Studios)。它也启动得很好,但是如果我取消外部程序,整个事情就会失败。医生——我试过了(他们两个),但它仍然没有处理超过 p.Start();行。
  • @Hallofo 那么你为什么不抓住那个异常并吞下它呢?
  • Tergiver 提出了一个很好的观点。如果你不熟悉,这里有一个关于 C# 异常处理的链接:msdn.microsoft.com/en-us/library/0yd65esw%28v=vs.80%29.aspx
【解决方案2】:

启用心理调试器。 . .

Process.Start 抛出 Win32Exception 并显示消息“系统找不到指定的文件”

解决方案:将 StartInfo.Filename 设置为要执行的文件的完整路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多