C#进程类的无效操作异常

时间:2009-07-20 05:57:49

标签: c# .net visual-studio-2008 process invalidoperationexception

当我使用VSTS调试器查看类Process实例的属性时,许多属性都标有InvalidOperationException。为什么?我做错了吗?

我正在使用VSTS 2008 + C#+ .Net 2.0来开发控制台应用程序。

这是我的代码:

System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "IExplore.exe";
myProcess.StartInfo.Arguments = @"www.google.com";
myProcess.StartInfo.Verb = "runas";
myProcess.Start();

调试器的屏幕截图:

enter image description here

3 个答案:

答案 0 :(得分:32)

您是否在调试器图片拍摄时实际启动了该过程?这是我希望在调用Start()方法之前看到的屏幕截图。

请注意,常见模式是创建ProcessStartInfo,填充它,然后调用静态Process.Start(startInfo)方法。这使得它在概念上更简单:在Process对象开始之前,您没有看到它。

答案 1 :(得分:1)

是的,这是预期的行为,并且在MSDN中也有明确记录。

例如,Process.BasePriority属性可以在进程退出或进程尚未启动时抛出InvalidOperationException异常(请参阅MSDN中的更多详细信息)。

答案 2 :(得分:1)

许多属性都标有InvalidOperationException,因为在您启动该进程之前。对象'myProcess'与任何正在运行的进程都没有关联,因此它无法获取信息。

尝试在启动流程的代码之后添加这些语句

if (myProcess != null)  
{
  myProcess.WaitForExit();
   //or any other statements for that matter
}

现在,当您在if语句中时,VSTS调试器将能够显示与对象myProcess关联的大多数属性。发生这种情况是因为myProcess对象现在与正在运行的进程“IExplore.exe”相关联。