相关疑难解决方法(0)

Process.WaitForExit在不同的机器上不一致

此代码在大量计算机上按预期运行.但是在一台特定的机器上,呼叫WaitForExit()似乎被忽略了,实际上标志着该过程已经退出.

static void Main(string[] args)
{
    Process proc = Process.Start("notepad.exe");
    Console.WriteLine(proc.HasExited); //Always False
    proc.WaitForExit(); //Blocks on all but one machines
    Console.WriteLine(proc.HasExited); //**See comment below
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

请注意,与SO上的类似问题不同,被调用的过程是notepad.exe(出于测试原因),因此故障不太可能 - 即它不会产生第二个子过程并关闭.即便如此,也无法解释为什么它适用于所有其他机器.

在问题机器上,即使记事本仍然在屏幕和任务管理器中仍然清楚地打开第二次Console.WriteLine(proc.HasExited))返回调用true.

该机器运行的是Windows 7和.NET 4.0.

我的问题是; 该特定机器上的条件可能导致这种情况?我应该检查什么?

编辑 - 到目前为止我尝试过的事情/更新/可能相关的信息:

  • 重新安装.NET.
  • 关闭任务管理器中我不知道的任何进程.
  • Windows尚未在此计算机上激活.
  • 根据评论中的建议,我尝试使用"现有"进程ID,GetProcessesByName但这只是在问题机器上返回一个空数组.因此,很难说问题就是这样WaitForExit,因为GetProcessesByName即使在调用之前调用也没有返回进程WaitForExit.
  • 在问题机器上,生成的记事本进程的ParentID是代码手动启动的记事本进程的ID,换句话说,记事本正在生成子进程并终止自身.

.net c# process

15
推荐指数
1
解决办法
3334
查看次数

标签 统计

.net ×1

c# ×1

process ×1