小编sox*_*oxr的帖子

创建任务时列出索引超出范围异常

确切的错误:

指数超出范围.必须是非负数且小于集合的大小.

我已经无数次索引数组和列表.我用过数组循环和列表无数次.数据在那里,它的工作原理.除非我尝试为我的功能创建任务.请注意,我成功地使用foreach循环执行此类功能; 这个新的需要两个参数,所以我不能正确使用foreach循环.至少我认为我不能.

这是错误的代码:

if (addressList != null) {
    textBox1.Text += ("Address List Length: " + addressList.Count + Environment.NewLine);

    for (int i = 0; i < addressList.Count; i++) {
        textBox1.Text += ("Task for " + addressList[i] + ":" + portList[i] + " initiated." + Environment.NewLine);

        Task.Factory.StartNew(() => PingTaskAdapted(addressList[i], portList[i]));
    }                
}
else textBox1.Text = ("No IPs have been added.");
Run Code Online (Sandbox Code Playgroud)

假设addressList[0]是google.com并且portList[0]是80,输出:

Address List Length: 1
Task for google.com:80 initiated.
Run Code Online (Sandbox Code Playgroud)

然后程序中断,Visual Studio告诉我在PingTaskAdapted()中我正在调用一个超出范围的索引,当它只是打印出有问题的索引时,因为它们存在.

而且要明确的是,如果我称之为PingTaskAdapted(addressList[0], pingList[0]);没有问题.

c# lambda task indexoutofboundsexception indexoutofrangeexception

15
推荐指数
3
解决办法
1356
查看次数