2013-03-04 54 views
-3

未處理異常的邊界之外:指數陣列systems.diagnostic.process

System.IndexOutOfRangeException:索引陣列的邊界之外。


在HPLog.MultiLevelPointer.ProcessMem.Main(字串[] args)在C:\用戶\賽福\ 文檔\的Visual Studio 2010 \項目\ HPLog \ HPLog \ Program.cs中:第61行 按任意鍵繼續。 。 。

Line61 System.Diagnostics.Process[] Client = 
       System.Diagnostics.Process.GetProcessesByName("Client"); 
     ProcessMemoryReader preader = new ProcessMemoryReader(); 

     preader.ReadProcess = Client[0]; 
     preader.OpenProcess(); 
+0

此外,毫無疑問:'Client'是一個空數組 - 這就是爲什麼你會得到這個異常。 – TGlatzer 2013-03-04 06:20:26

回答

4

怎麼樣了這一點:一個答案時,你甚至沒有問一個問題!

System.Diagnostics.Process[] Client = 
      System.Diagnostics.Process.GetProcessesByName("Client"); 
ProcessMemoryReader preader = new ProcessMemoryReader(); 

if (Client != null && Client.Length > 0) { 
    preader.ReadProcess = Client[0]; 
    preader.OpenProcess(); 
} 
else { 
    // Error handling... 
} 
0

嘗試這樣代替:

try 
{ 
    System.Diagnostics.Process Client = System.Diagnostics.Process.GetProcessesByName("Client")[0]; 
} 
catch (IndexOutOfRangeException e) 
{ 
    System.Diagnostics.Process Client = null; 
} 

然後,可以使用客戶端之前,請確保它不爲空

而且,你肯定是「客戶」是當前進程名?

0

使用陣列之前,您應該測試它是否null或包含任何項目。由於您始終有機會使用該名稱的進程不存在。