gpt4 book ai didi

c# - 强制外部进程在一段时间后被杀死

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:20 24 4
gpt4 key购买 nike

我有一个从 C# 类库运行的命令行可执行文件。在极少数情况下,可执行文件会因为传递给它的命令行数据而挂起。不幸的是,这会导致调用 c# DLL 的应用程序在无限期等待进程退出时挂起。

如果命令行 exe 没有在 1 秒内完成执行,它永远不会退出。我想做的是在进程启动后立即生成一个计时器,如果它在几秒钟内没有退出则强制关闭该进程。

这里最好的方法是什么?该解决方案需要对性能的影响最小,因为此命令行过程是高度重复任务的瓶颈。

编辑:为什么我应该使用 System.Timer 而不是 Threading.Timer 或反之亦然?

            ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = workingDirectory;
startInfo.FileName = commandLineExe;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = strArguments;



// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo))
{

exeProcess.WaitForExit();
}

请不要提出我应该尝试找出命令行应用挂起的原因,或者我应该将命令行功能重构到源代码中的建议。我们正在积极解决这个问题,但应用程序的稳定性需要放在首位。

最佳答案

只需添加:

// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo)) {
if(!exeProcess.WaitForExit(1000))
exeProcess.Kill();
}

关于c# - 强制外部进程在一段时间后被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434505/

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