【发布时间】:2008-10-30 13:56:21
【问题描述】:
我有一个简单的应用程序,代码如下:
FileInfo[] files = (new DirectoryInfo(initialDirectory)).GetFiles();
List<Thread> threads = new List<Thread>(files.Length);
foreach (FileInfo f in files)
{
Thread t = new Thread(delegate()
{
Console.WriteLine(f.FullName);
});
threads.Add(t);
}
foreach (Thread t in threads)
t.Start();
假设在“I=initialDirectory”目录中我有 3 个文件。然后这个应用程序应该创建 3 个线程,每个线程打印一个文件名;但是,每个线程都会打印出“files”数组中最后一个文件的名称。
这是为什么?为什么当前文件 'f' 变量没有在匿名方法中正确设置?
【问题讨论】:
标签: c# multithreading .net-2.0 anonymous-methods