C#优雅地关闭一个没有UI的单独应用程序

C# gracefully close a separate application that has no UI

本文关键字:一个 UI 应用程序 单独      更新时间:2023-10-16

i使用C#进程类打开一个没有GUI的单独应用程序。我使用Process.Kill()结束它是一个C 项目。问题在于,这并不能使其有机会完成其动作。Process.Close()只是在我的主应用程序中释放对象,然后将单独的应用程序运行。

什么是优雅地关闭此过程的最佳方法?

过去,我需要从gui c#工具中启动一个非gui c#工具,这两个工具都是我写的。我使用标准输入/输出流在这两个工具之间进行通信。

您可以使您的C 工具在其stdin上收听指示该工具应优雅戒烟的命令。然后,在您的C#应用程序中,发送退出命令,等待合理的时间,如果该工具还没有结束,请杀死它。

很抱歉,我的C 还不够好,无法为您提供C 方面的示例,但是我的C#项目中使用了以下几行来告诉外部过程:

m_consoleProcess.StandardInput.WriteLine("QUIT");
m_consoleProcess.WaitForExit(10000);
if (!m_consoleProcess.HasExited)
{
     m_consoleProcess.Kill();
}

如果您需要管理单独的外部流程,则当然需要为每个过程存储一个Process实例,并且您必须处理外部进程在申请退出之前结束的情况。