索引超出了数组systems.diagnostic.process的范围

本文关键字:diagnostic process 范围 systems 数组 索引 | 更新日期: 2023-09-27 18:02:16

未处理异常:

系统。IndexOutOfRangeException:索引超出了数组的边界。


在HPLog.MultiLevelPointer.ProcessMem

。Main(String[] args) in C:'Users'Seif'文档'Visual Studio 2010'Projects'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();

索引超出了数组systems.diagnostic.process的范围

这是怎么回事:当你甚至没有问一个问题的时候,一个答案!

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...
 }

试试这样做:

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

在使用Client之前,请确保它不是null

还有,你确定'Client'是实际的进程名吗?

在使用数组之前,您应该测试它是否为null或包含任何项。因为您总是有机会使用该名称的进程不存在