У меня есть простое приложение со следующим кодом:
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 потока, причем каждый поток печатает одно из имен файлов; однако вместо этого каждый поток будет печатать имя последнего файла в массиве "файлы".
Почему это? Почему текущая переменная 'f' не получает правильную настройку в анонимном методе?