首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >来自C#流程类的无效操作异常

来自C#流程类的无效操作异常
EN

Stack Overflow用户
提问于 2009-07-20 05:57:49
回答 3查看 48.8K关注 0票数 21

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

我正在使用VSTS2008+ C# + .Net 2.0开发一个控制台应用程序。

下面是我的代码:

代码语言:javascript
复制
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();

以及调试器的屏幕截图:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-20 06:05:04

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

注意,常见的模式是创建一个ProcessStartInfo,填充它,然后调用静态Process.Start(startInfo)方法。这使得它在概念上变得更简单:在启动Process对象之前,您看不到它。

票数 36
EN

Stack Overflow用户

发布于 2009-07-20 06:38:35

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

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

代码语言:javascript
复制
if (myProcess != null)  
{
  myProcess.WaitForExit();
   //or any other statements for that matter
}

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

票数 2
EN

Stack Overflow用户

发布于 2009-07-20 06:32:27

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1151903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档