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リストの一部 (フィールドなど) を更新する1 つのスレッドとDevice.status、これらのリストがDataGridViewテーブルにバインドされ、フィールドの一部 (Device.descriptionフィールドなど) を手動で編集できる UI スレッドがあります。
私の問題は、Timer スレッドが Binding リストのコンテンツを更新しようとすると、次のようになることです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。このアプリケーションをスレッドセーフにする方法は?