2011-12-06 47 views
2

爲什麼我總是得到|訪問被拒絕|在調試期間異常?調試失敗,但在其他情況下工作

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

無論它是什麼過程,總是調用exeption。 但它工作,如果我剛開始沒有調試。 我想通過/的方式獲得流程的完整路徑。

回答

3

訪問被拒絕錯誤(確切地說是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實例時得到異常。

相關問題