private static Thread thread;
private static List<object> items = new List<object>();
static Program()
{
thread = new Thread(() =>
{
foreach (var item in items)
{
item.Name = "ABC";
}
Thread.Sleep(3600);
});
thread.Start();
}
private static void Main(string[] args)
{
var item = items.Where(i => i.Name == "ABC").FirstOrDefault();
if(item != null)
{
items.Remove(item);
}
}
ご覧のとおり、リストを使用して開始されたアプリケーションでスレッドが開始され、リストに対して何らかの操作が実行され、同じリストがメインスレッドによって使用されます。
新しいスレッドの foreach ループ内のコードが実行され、同時に foreach ループも実行されると、リストを変更できないというエラーがスローされます。
問題を克服する方法はありますか?
ありがとう