次のコードを使用した簡単なアプリケーションがあります。
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' 変数が正しく設定されないのはなぜですか?