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
相关产品推荐
相关产品推荐

