gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:21 24 4
gpt4 key购买 nike

我使用 c# 进程类打开一个没有 GUI 的单独应用程序。这是一个 c++ 项目,我使用 Process.Kill() 来结束它。问题是这并没有给它完成 Action 的机会。 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 实例,并且您必须处理外部进程在您的应用程序退出之前结束的情况.

关于C# 优雅地关闭没有 UI 的单独应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40974794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com