我有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处理列表。如何使这个应用程序线程安全?