我正在创建一个新的Systems.Diagnostics对象:
System.Diagnostics.Process androidProcess= new System.Diagnostics.Process();
但我的代码导致InvalidOperationException
例外,我不明白为什么。
BasePriority = 'androidProcess.BasePriority' threw an exception of type 'System.InvalidOperationException'
ExitCode = 'androidProcess.ExitCode' threw an exception of type 'System.InvalidOperationException'
ExitTime = 'androidProcess.ExitTime' threw an exception of type 'System.InvalidOperationException'
为什么我的代码会产生这些异常?
提前致谢。
答案 0 :(得分:2)
问题是,在进程启动之前,您无法访问这些属性中包含的值。在流程开始之前,它没有进程ID或与之关联的句柄。
属性的documentation确认了这一点,表明在以下某个条件下抛出了InvalidOperationException
:
- 这个过程已经退出。
-OR -- 流程尚未开始,因此没有进程ID。
解决方案是启动您首先创建的进程,然后根据需要获取这些属性。
答案 1 :(得分:0)
BasePriority,ExitTime和ExitCode是只读的。您无法设置这些属性。它们由CLR或启动过程本身设置。
查看MSDN: