gpt4 book ai didi

c# - 如何确保该进程仍在运行以便我可以杀死它?

转载 作者:可可西里 更新时间:2023-11-01 09:41:11 25 4
gpt4 key购买 nike

我有一个进程,我想杀死;然而,有时这会产生 InvalidOperationException,表示进程已经退出。

为了防止异常,我尝试检查进程是否退出:

if (!p.HasExited)
{
p.Kill();
}

但是,我仍然偶尔会看到异常。由于该进程与我的代码并行运行,我假设问题本质上可能是竞争条件,即进程在检查和 Kill() 调用之间终止。

在不引发上述异常的情况下终止进程的正确方法是什么?当然,我可以 try catch 有问题的代码,但这似乎不是解决此问题的最佳方法。

最佳答案

你无法解决这个问题,因为有一个内置的竞争条件:当你调用 p.HasExited 时进程可能还活着,但是到时候当您的程序调用 p.Kill() 时,它可能已经退出。

一个单独的进程本质上是一个并发实体,因此您需要某种形式的同步来解决这种竞争条件。但是,如果您不拥有相关进程的代码,则无法解决此问题,因为无法同步监视相关进程的程序事件和进程本身。

您应该无条件地发送 kill 信号,捕获特定的异常,然后继续。

关于c# - 如何确保该进程仍在运行以便我可以杀死它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26548714/

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