ProcessStartInfo psi = new ProcessStartInfo(BatchFile)
Process p = Process.Start(psi)
为什么p.ID
与 WindowsTaskManager 中可见的进程 ID 不同
(BatchFile
是带有适当参数的外部程序的路径)
ProcessStartInfo psi = new ProcessStartInfo(BatchFile)
Process p = Process.Start(psi)
为什么p.ID
与 WindowsTaskManager 中可见的进程 ID 不同
(BatchFile
是带有适当参数的外部程序的路径)
我假设 BatchFile 是某种 cmd 或 bat 文件,它们一个接一个地运行其他进程。
因此,在 Windows 任务管理器中,您实际上会看到由批处理文件运行的那些进程的 ID。
例子
如果我这样做
var p = Process.Start("notepad.exe");
p.Id
将与PID
来自任务管理器的匹配。
但是,如果我这样做:
var p = Process.Start("test.cmd"); // test.cmd has notepad.exe call inside
p.Id
将PID
与任务管理器中显示的不同。
我认为这是因为p.ID
运行批处理文件的进程的 id 而不是批处理文件启动的进程的id。
Process.Start
您可以使用正确的重载直接启动可执行文件
进程 ID 仅在进程处于活动状态时才有意义。首先要检查的是.HasExited
——如果这是真的,忽略进程ID;它不再有任何意义。
有很多方法可以让你开始一些事情并且没有任何进程,即使你可以明显地在屏幕上看到它: