我有public static class MyGlobals
我的应用程序范围的变量和多线程处理和更改这些变量。
public static class MyGlobals
{
public static BindingList<Device> devicesList;
public static BindingList<Device> availableList;
public static object listLock = new object();
}
我有一个Timer
线程,更新列表的一部分(例如Device.status
字段)和 UI 线程,这些列表绑定到表,并且可以在那里手动编辑DataGridView
一些字段(例如字段)。Device.description
我的问题是,当 Timer 线程想要更新绑定列表内容时,我得到InvalidOperationException
:
Additional information: Cross-thread operation not valid: Control 'gridView1' accessed from a thread other than the thread it was created on.
lock(listLock)
我在修改列表的每个代码块周围使用语句MyGlogals
,但我无法控制如何DataGridView
处理列表。如何使这个应用程序线程安全?