C#数组索引超出范围,根本原因未知

时间:2014-09-29 08:46:12

标签: c# arrays indexing indexoutofboundsexception

我有以下循环,它为数组中的特定数量的名称启动任务。 整个事情都在后台工作者中运行。

在此示例中,三个名称将写入数组:

        int i = 0;
        foreach(string name in MainWindow.Globals.defaultNames)
        {
            Task t = new Task(() => DoWork(name, i));
            bw.ReportProgress(i);
            t.Start();
            i++;
        }

DoWork的任务开始如下:

private void DoWork(string name, int i)
{
        Console.WriteLine("i = " + i);
        Console.WriteLine(name);
        string login = MainWindow.Globals.defaultUsername;
        string pw = MainWindow.Globals.defaultPW;
        ...
        string command = string.Format(changeName, login, pw, MainWindow.Globals.hostNames[i]); 

奇怪的是,在MainWindow.Globals.hostNames[i]);,程序抛出一个异常,表明数组的索引超出范围。

控制台输出显示" 3"对于i,这很奇怪,因为阵列中只有三个名字而且我从0开始。正确的数字应该是2.

有人有线索,为什么我是3或我得到+1?

非常感谢。

CRowland

0 个答案:

没有答案