调试失败但在其他情况下有效

时间:2011-12-06 05:35:53

标签: c#

为什么我总是得到|拒绝访问|调试期间的异常?

foreach(Process p in Process.GetProcesses())
{
   string module=p.MainModule.Filename;
}

无论是什么过程,总是会被称为exeption。 但是如果我没有调试就开始工作。 我希望通过/.

的方式获得整个过程

1 个答案:

答案 0 :(得分:3)

拒绝访问错误(确切地说是Win32Exception),因为您正在查询对不再运行的进程的引用。 GetProcesses返回一个数组。如果在返回列表后进程终止,则在尝试查询进程时将收到此异常。

只是巧合而没有调试。

要重现,试试这个。开始记事本。运行以下代码。

var processes = Process.GetProcesses();
Console.WriteLine("press enter");
Console.ReadLine();
foreach (var p in processes) Console.WriteLine(p.MainModule.FileName);

当应用输出&#34时关闭记事本;按下输入"。当您按Enter键时,您在尝试查询记事本的Process实例时会收到异常。