【发布时间】:2009-08-14 23:50:32
【问题描述】:
我有以下代码:
var items = new List<string> {"1", "2", "3"}; // 200 items
foreach(var item in items) {
ThreadPool.QueueUserWorkItem((DoWork), item);
}
private void DoWork(object obj)
{
lock(this)
{
using(var sw = File.AppendText(@"C:\somepath.txt")
{
sw.WriteLine(obj);
}
}
}
由于线程,出于某种原因,我得到了写入文件的 200 个项目的随机数。 60 或 127 或有时只有 3。如果我删除 ThreadPool 并仅在原始 foreach 循环内写入,则所有 200 项都已成功写入。
不知道为什么会这样?
感谢您的帮助。
【问题讨论】:
标签: c# multithreading locking