2
爲什麼我總是得到|訪問被拒絕|在調試期間異常?調試失敗,但在其他情況下工作
foreach(Process p in Process.GetProcesses())
{
string module=p.MainModule.Filename;
}
無論它是什麼過程,總是調用exeption。 但它工作,如果我剛開始沒有調試。 我想通過/的方式獲得流程的完整路徑。
爲什麼我總是得到|訪問被拒絕|在調試期間異常?調試失敗,但在其他情況下工作
foreach(Process p in Process.GetProcesses())
{
string module=p.MainModule.Filename;
}
無論它是什麼過程,總是調用exeption。 但它工作,如果我剛開始沒有調試。 我想通過/的方式獲得流程的完整路徑。
訪問被拒絕錯誤(確切地說是Win32Exception)發生是因爲您正在查詢對不再運行的進程的引用。 GetProcesses
返回一個數組。如果進程在返回列表後終止,那麼如果嘗試查詢該進程,將會得到此異常。
這只是一個巧合,它的工作原理沒有調試。
要重現此問題,請嘗試此操作。開始記事本。運行以下代碼。
var processes = Process.GetProcesses();
Console.WriteLine("press enter");
Console.ReadLine();
foreach (var p in processes) Console.WriteLine(p.MainModule.FileName);
當應用輸出「press enter」時關閉記事本。當你按下Enter鍵時,你會在嘗試查詢記事本的Process實例時得到異常。