创建System.diagnostics.Process的对象

时间:2011-05-09 11:04:14

标签: c#

我正在创建一个新的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'

为什么我的代码会产生这些异常?

提前致谢。

2 个答案:

答案 0 :(得分:2)

问题是,在进程启动之前,您无法访问这些属性中包含的值。在流程开始之前,它没有进程ID或与之关联的句柄。

属性的documentation确认了这一点,表明在以下某个条件下抛出了InvalidOperationException

  
      
  • 这个过程已经退出。   
    -OR -
  •   
  • 流程尚未开始,因此没有进程ID。
  •   

解决方案是启动您首先创建的进程,然后根据需要获取这些属性。

答案 1 :(得分:0)

BasePriority,ExitTime和ExitCode是只读的。您无法设置这些属性。它们由CLR或启动过程本身设置。

查看MSDN: