【问题标题】:Prevent third-party app crash from holding up program?防止第三方应用程序崩溃阻止程序?
【发布时间】:2020-05-05 16:14:12
【问题描述】:

我有一个接口,它为另一个程序生成输入文件以计算泵性能,然后运行该程序并收集输出。如果输入的第三方程序中的计算不满意,第三方程序将崩溃并给出神秘的错误消息,无论你点击多少次“确定”都会继续弹出。第三方程序只是我拥有的一个 .exe 文件,我自己无权访问源代码。

有没有办法调用这个程序,但如果它崩溃,让我的界面杀死它?目前,我唯一的解决方法是打开我的任务管理器并手动终止该进程。

下面是我调用程序运行的代码部分。 “cpump.exe”是我指的第三方程序。我确实意识到它永远不会返回 False,因为程序在代码中的那个点之前就挂断了。请原谅我的无知/拙劣的作风,我绝不是程序员/开发人员,只是一个试图自动化他一些无聊工作的机械工程!

        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = "c:\\cpump\\file\\cpump.exe";
        start.WindowStyle = ProcessWindowStyle.Hidden;
        start.UseShellExecute = false;
        start.WorkingDirectory = "c:\\cpump\\file\\";
        start.Arguments = "/k";
        start.CreateNoWindow = true;
        int exitCode;


        // Run the external process & wait for it to finish
        using (Process proc = Process.Start(start))
        {
            proc.WaitForExit();

            // Retrieve the app's exit code
            exitCode = proc.ExitCode;
        }

        if (exitCode == 0)
        {
            MessageBox.Show("Sucessful calculation complete.");
            return true;
        }
        else
        {
            return false;
        }

【问题讨论】:

    标签: c# crash


    【解决方案1】:

    您需要将代码放入 try catch。你也可以查看这个类似的问题LINK和推荐的解决方案。

    【讨论】:

    • 尝试到底应该去哪里?我过去尝试过尝试捕获,但似乎没有任何帮助。另外,我不在乎错误消息是什么,因为程序吐出的内容根本没有用,我只想能够显示我自己的消息,上面写着“进程失败”之类的。
    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2011-10-13
    相关资源
    最近更新 更多