马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

索引超出了数组界限

  [复制链接]
查看6284 | 回复7 | 2016-6-14 14:19:01 | 显示全部楼层 |阅读模式
在按钮的单击事件 button_Starts_Click 中,调试时打断点出现这个情况:当i的值为4时for循环执行完了之后,在这句 myResultTask.Wait();执行了之后居然又进入了for循环,我觉得有点奇怪。请指点一下,谢谢!代码很少,请看附件 简单的任务数组取消框架.rar (56.86 KB, 下载次数: 4)
ibcadmin | 2016-6-14 14:37:17 | 显示全部楼层
   myResultTask.Wait();  走到这等了好久 被卡住了
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
eofd007 | 2016-6-14 14:42:39 | 显示全部楼层
ibcadmin 发表于 2016-6-14 14:37
myResultTask.Wait();  走到这等了好久 被卡住了

1.jpg
如图所示,调试时在这两行下断,发现出现这个情况:当i的值为4时for循环执行完了之后,在这句 myResultTask.Wait();执行了之后居然又进入了for循环,感觉太奇怪了
ibcadmin | 2016-6-14 15:56:57 | 显示全部楼层

4.png
我调试了代码,发现的问题是,报错的时候 i=5 ,
所以myTokenSources[5]的时候肯定是出现索引超出界限,myTokenSources是0-4
我现在也搞不懂 , i=5的时候 为什么会进for循环。
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
eofd007 | 2016-6-15 10:17:35 | 显示全部楼层
ibcadmin 发表于 2016-6-14 15:56
我调试了代码,发现的问题是,报错的时候 i=5 ,
所以myTokenSources[5]的时候肯定是出现索引超出界 ...

是啊,很奇怪,还麻烦你帮我看看啊
eofd007 | 2016-6-15 10:18:14 | 显示全部楼层
ibcadmin 发表于 2016-6-14 15:56
我调试了代码,发现的问题是,报错的时候 i=5 ,
所以myTokenSources[5]的时候肯定是出现索引超出界 ...

是啊,很奇怪,还麻烦你帮我看看啊
ibcadmin | 2016-6-15 12:33:10 | 显示全部楼层
    Task<string[]> myResultTask = Task.WhenAll<string>(myTasks);
            myResultTask.Wait();

问题还是在这句话里,我把    myResultTask.Wait();删掉后能正常执行,我的个人观点是,你在循环中给 myTasks[i].Start(); 开启,是一个一个开启的。但是等待的时候,是批量等待的,所以觉得问题出在这,至于怎么解决....我就无能为力了..
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
eofd007 | 2016-6-15 14:40:04 | 显示全部楼层
ibcadmin 发表于 2016-6-15 12:33
Task myResultTask = Task.WhenAll(myTasks);
            myResultTask.Wait();

哦,有一定道理。虽然很难解决,但是还是谢谢老大了!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则