在我的控制台应用程序中,我的代码看起来像

    Process DKU = new Process();
    DKU.StartInfo.FileName = "MSSQLExecutor.exe";
    DKU.Start();
    DKU.WaitForExit();
    Console.WriteLine("lets move on ");

这工作正常,并且等待直到MSSQLExecutor.exe完成其工作,然后再执行此操作
该应用程序继续。

我的问题是,有时MSSQLExecutor.exe崩溃,并且Windows默认情况下会显示一个对话框以结束程序。届时,我的应用程序将永远等待用户单击“关闭”按钮。

我想避免这种情况,因为我的应用程序将作为服务运行而无需用户交互。

最佳答案

对话框阻止该进程存在。

  • 如果MSSQLExecutor是您的应用程序,则应解决此问题。
    但是您可以达到目标(隐藏对话框)。处理Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException

    Application.ThreadException +=new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    
    
    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        // log the exception
    }
    
    static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {
        // log the exception
    }
    
  • 如果MSSQLExecutor不是您的应用程序,则可以停用Dr. Watson


  • 单击“开始”,单击“运行”,在“打开”框中键入regedit.exe,然后单击“确定”。
  • 找到并单击下面的注册表项:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
  • 单击AeDebug项,然后单击“注册表”菜单上的“导出注册表文件”。
  • 删除AeDebug项。

  • 更多信息
  • How to disable or enable Dr. Watson for Windows
  • 关于c# - 如何知道进程崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9131742/

    10-10 17:44