-3

未処理の例外:

System.IndexOutOfRangeException: インデックスが配列の範囲外でした。


C:\Users\Seif\Documents\Visual Studio 2010\Projects\HPLog\HPLog\Program.cs:line 61 の HPLog.MultiLevelPointer.ProcessMem.Main(String[] args) で、任意のキーを押して続行します。. .

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

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

3 に答える 3

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...
 }
于 2013-03-04T06:20:25.750 に答える
0

代わりに次のようなことを試してください:

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

次に、クライアントを使用する前に、それがnullでないことを確認してください

また、「クライアント」が実際のプロセス名であると確信していますか?

于 2013-03-04T06:21:41.197 に答える
0

配列を使用する前に、配列にアイテムがあるかどうか、またはアイテムが含まれているかどうかをテストする必要がありnullます。その名前のプロセスが存在しない可能性は常にあるためです。

于 2013-03-04T06:22:01.723 に答える