我在静态类中有一个静态BindingList,它在一个单独的线程上运行的UI和另一个类都添加/删除。这工作正常,直到我尝试将BindingList设置为DataGridView的数据源。现在当另一个线程试图在静态类
中调用此方法时public static Chunk GetAndRemoveFirstChunk()
{
Chunk chunk = Chunks.FirstOrDefault();
Chunks.RemoveAt(0);
return chunk;
}
它给出了这个错误:
System.InvalidOperationException:'跨线程操作无效: 控件''从其创建的线程以外的线程访问 '上。
在线:Chunks.RemoveAt(0);
只需添加Control.CheckForIllegalCrossThreadCalls = False;
到UI构造函数可以防止错误,但我认为这不是一个好的解决方案。
那么解决这个问题的好方法是什么?