C# 与DataGridView的线程安全交互';s数据源
假设DataGridView有一个BindingList作为数据源。一些后台线程可以从该列表中读取和写入。显然,如果DataGridView在后台线程对列表进行枚举时修改列表(InvalidOperationException:collection已修改),则这是有问题的。 我可以想出3种解决方案:C# 与DataGridView的线程安全交互';s数据源,c#,collections,datagridview,concurrency,synchronization,C#,Collections,Datagridview,Concurrency,Synchronization,假设DataGridView有一个BindingList作为数据源。一些后台线程可以从该列表中读取和写入。显然,如果DataGridView在后台线程对列表进行枚举时修改列表(InvalidOperationException:collection已修改),则这是有问题的。 我可以想出3种解决方案: 同步对列表的访问 使用.Invoke()获取列表的副本并对其进行枚举。枚举后,使用另一个.Invoke()将数据源替换为(可能)已修改的集合 将线程安全集合用作数据源 我想是2。导致过多的开销,并且
锁(list.SyncRoot){…}
块中,这可能会起作用,但是我需要说服DataGridView也这样做。这可能吗