に項目を追加する必要があるワーカー スレッドがありますBindingList。ただし、BindingListは にデータバインドされていDataGridViewます。したがって、リストに追加しようとすると、InvalidOperationException (Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.)
通常、この例外に対して次のようにします。
if(winformControl.InvokeRequired) {
winformControl.Invoke(MethodDelegate);
}
ただし、Winform コントロールが見えないため、データバインディングは物事を混乱させます。私が持っているのは、例外をスローする次の行だけです。
ClassInstance.MyBindingList.Add(myObject);
このシナリオ専用のソリューションがある場合は、すばらしいことです。
そうでない場合、メインスレッドに特定のメソッドを実行するようにワーカースレッドに指示するにはどうすればよいですか (ワーカースレッドによって提供されるいくつかのパラメーターを使用)。私のワーカー スレッドは現在 (データベースへの書き込みなど) 実際に多くの処理を行っており、すべてがスレッド セーフかどうかはわかりません。私は学生で、マルチスレッドは初めてですが、それはまだ私の得意分野ではありません。