如题,
tasks[i] = Task.Factory.StartNew(delegate { renwu(taskid, luInfos, MyWebClient[i]); });renwu()中的i的值为什么能取到5
有没有办法避开这种错误
如题,
tasks[i] = Task.Factory.StartNew(delegate { renwu(taskid, luInfos, MyWebClient[i]); });renwu()中的i的值为什么能取到5
有没有办法避开这种错误
闭包自由参数穿越,曾经有人说书上说的“C#不会产生闭包穿越”,但是我们实际一线开发可以肯定的说,闭包情况的自由变量穿越在C#里完全存在。
解决方法:传统手段,当参数传递进去(不和陌生人说话尽量不使用外面不认识的人,除非你确保绝对安全)
Task.Factory.StartNew(client =>
{
WebClient _client = (client) client;
},xxxx[i])