为什么我总是得到|拒绝访问|调试期间的异常?
foreach(Process p in Process.GetProcesses())
{
string module=p.MainModule.Filename;
}
无论是什么过程,总是会被称为exeption。 但是如果我没有调试就开始工作。 我希望通过/.
的方式获得整个过程答案 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实例时会收到异常。