gpt4 book ai didi

c# - 如果 5 分钟内没有记录任何内容,如何使进程崩溃

转载 作者:行者123 更新时间:2023-12-04 10:52:58 24 4
gpt4 key购买 nike

我在 Ubisoft 工作,我们使用一个非常旧的程序来操作一些文件。由于它是遗留软件,它真的很糟糕,并且可能会发生软件崩溃并继续运行的情况。遗憾的是,我们无法访问代码,因此我们无法修复它。我在想,是否可以将 System.Diagnostics.Process 与“无日志超时”一起使用 ?这就是我想要实现的目标

var legacySoftwareProcess = new Process
{
StartInfo =
{
UseShellExecute = false,
RedirectStandardOutput = true,
WorkingDirectory = localPackageFolder,
FileName = CiConfig.DataGeneration.RebuildUnstrippedBatName
}
};

legacySoftwareProcess.IdleLogTimeout = 5 * 60; // 5 minutes
legacySoftwareProcess.Start();
var output = proc.StandardOutput.ReadToEnd();
legacySoftwareProcess.WaitForExit();

if (legacySoftwareProcess.ExitCode != 0)
{
Context.LogMessage(output);
Context.LogError("The process exited with non 0 code");
}

最佳答案

而不是使用:

var output = proc.StandardOutput.ReadToEnd();

当从进程接收到输出数据时,您可以监听事件:
proc.OutputDataReceived += ResetTimer;
proc.Start();
proc.BeginOutputReadLine(); // not sure that you should use that as it may read output synchronously (I will check that soon)

而在处理程序方法ResetTimer中,顾名思义,就是重置一个5分钟的定时器:
static void ResetTimer(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
// reset the timer
}
}

如果计时器已过,则表示 5 分钟内没有任何输出,您可以采取相应的措施,即终止进程。

关于c# - 如果 5 分钟内没有记录任何内容,如何使进程崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379288/

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