当我试图通过语音识别终止程序时,我得到{"索引超出了数组的范围。"}错误

时间:2017-01-22 09:02:25

标签: c# speech-recognition

我跟着关于开始和结束程序的语音识别教程。当我执行一个命令来打开MS WORD时,它确实很好,但是当我尝试关闭程序时,我得到一条关于索引超出数组范围的错误消息。它指出Procs [0]超出范围。

     public static void killProg(string s)
    {
        System.Diagnostics.Process[] Procs = null;

        try
        {
            Procs = Process.GetProcessesByName(s);
            Process prog = Procs[0];

            if (!prog.HasExited)
            {
                prog.Kill();

            }
        }

        finally
        {
            if (Procs != null)
            {
                foreach (Process p in Procs)
                {
                    p.Dispose();
                }
            }
        }

有人可以帮忙吗?我使用C#非常新,不知道该怎么办?

2 个答案:

答案 0 :(得分:0)

Procs = Process.GetProcessesByName(s);可能返回0个元素。这导致Procs[0];抛出IndexOutOfRangeException

保护您的代码免受您无法找到所需内容的可能性。

答案 1 :(得分:0)

显然Process.GetProcessesByName(s)调用返回一个空数组,这意味着没有第一个元素(索引0),因此你得到一个异常。

您应该检查数组是否为空:

Procs = Process.GetProcessesByName(s);
if ( Procs.Length > 0 )
{
   //your code
}