以前在循环中偶尔会用到lambda函数
eg.
foreach(var v in lst)
{
Jobs.QueueJob(()=>DoSomething(v));
}
看似没什么问题,但如果QueueJob是异步执行,这里的v会只保留一份,通常是lst中最后一个的值;
从而导致DoSomething(lst[lst.Count-1])执行了lst.Count次
🙂
以前在循环中偶尔会用到lambda函数
eg.
foreach(var v in lst)
{
Jobs.QueueJob(()=>DoSomething(v));
}
看似没什么问题,但如果QueueJob是异步执行,这里的v会只保留一份,通常是lst中最后一个的值;
从而导致DoSomething(lst[lst.Count-1])执行了lst.Count次
🙂
近期评论