【发布时间】:2011-04-19 13:33:11
【问题描述】:
我遇到了问题
foreach(var category in categories)
{
foreach(var word in words)
{
var waitCallback = new WaitCallback(state =>
{
DoSomething(word, category);
});
ThreadPool.QueueUserWorkItem(waitCallback);
}
}
当DoSomething 被执行时,它会收到每个捕获变量的最新值,而不是我想要的值。我可以想象一个解决方案,但它想象你们可以想出更好的解决方案
【问题讨论】:
-
我不同意它是重复的。那篇文章询问为什么会发生这种行为;这篇文章询问编写此代码以避免问题的最佳方法是什么。
标签: c# .net concurrency delegates captured-variable