You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Process.GetProcessesByName返回错误结果导致C#程序误判自身已运行的问题求助

Process.GetProcessesByName返回错误结果导致C#程序误判自身已运行的问题求助

大家好,我遇到个挺棘手的问题,想请各位帮忙分析下。

我有个用C#写的老程序,一直靠下面这段代码检测自身是否已在运行,这么多年都没出过岔子:

Process CurProcess = Process.GetCurrentProcess();
Process[] CurProcesses = System.Diagnostics.Process.GetProcessesByName(CurProcess.ProcessName);
if (CurProcesses.Length > 1)
{
    // 判定程序已运行的逻辑
}

但最近一个月,有两个用户反馈程序会误判自身已经在运行——明明任务管理器和命令行里都查不到这个程序的进程,代码却判定已经在运行了。其中一个用户的情况我还亲自验证过,确实没有相关进程,但代码就是返回了多个进程的结果。

当时我试着把程序的exe文件移到别的文件夹,再移回来,重新运行就正常了,不会再误判。看起来像是Windows的某些进程记录偶尔会出问题?

更头疼的是,这两个用户都提到,有时候重启电脑后问题依然存在,程序还是固执地认为自己已经在运行了,可实际上完全没有相关进程。

另外补充下,这个程序是比较老的,最近刚升级到以.NET Framework 4.8为目标框架,不确定是不是这个改动引发的问题。我自己搜了一圈,没找到类似的问题讨论,所以来这里求助各位,有没有人遇到过类似的情况,或者能给点排查的方向?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:17:58