dict の値のコピーを使用して、for each ループでスレッドを生成しようとしています。
私の最初の理解では、foreach
が新しいスコープを作成し、次のようになりました。
Dictionary<string, string> Dict = new Dictionary<string, string>() { { "sr1", "1" }, { "sr2", "2" } };
foreach (KeyValuePair<string, string> record in Dict) {
new System.Threading.Timer(_ =>
{
Console.WriteLine(record.Value);
}, null, TimeSpan.Zero, new TimeSpan(0, 0, 5));
}
書き込みます
1
2
2
2
代わりに(予想される):
1
2
1
2
だから私は foreach で kvp を複製しようとしました:
KeyValuePair<string, string> tmp = new KeyValuePair<string, string>(record.Key, record.Value);
しかし、それは同じ結果をレンダリングします。
私も試してみましたSystem.Parallel.ForEach
が、動的ではない値が必要なようです。これは、私の辞書にとってはちょっと面倒です。
スレッドを使用して Dictionary を反復処理するにはどうすればよいですか?