当我使用VSTS debugger查看类Process
实例的属性时,许多属性都被标记为InvalidOperationException
。为什么?我做错什么了吗?
我正在使用VSTS2008+ 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();
以及调试器的屏幕截图:
发布于 2009-07-20 06:05:04
在拍摄调试器图片时,您是否实际启动了该进程?这是我期望在调用Start()
方法之前看到的屏幕截图。
注意,常见的模式是创建一个ProcessStartInfo
,填充它,然后调用静态Process.Start(startInfo)
方法。这使得它在概念上变得更简单:在启动Process
对象之前,您看不到它。
发布于 2009-07-20 06:38:35
许多属性都被标记为InvalidOperationException,因为在您启动该过程之前。对象'myProcess‘没有与任何正在运行的进程相关联,因此它无法获取信息。
尝试在启动进程的代码后添加这些语句
if (myProcess != null)
{
myProcess.WaitForExit();
//or any other statements for that matter
}
现在,当您在if语句中时,VSTS调试器将能够显示与对象myProcess关联的大多数属性。这是因为,myProcess对象现在与一个正在运行的进程"IExplore.exe“相关联。
发布于 2009-07-20 06:32:27
是的,这是预期的行为,并且在MSDN中也有明确的文档记录。
例如,当进程已退出或进程尚未启动时,Process.BasePriority属性可能会引发InvalidOperationException异常(请参阅MSDN中的更多详细信息)。
https://stackoverflow.com/questions/1151903
复制相似问题