DataGridviewを使用してバインドしていBindingSourceます。したがって、メインスレッドでは、このように指定しました。
class1BindingSource = new BindingSource();
class1BindingSource.DataSource = class1List;
this.dataGridView1.DataSource = class1BindingSource;
その後、フォームにバックグラウンドワーカーを配置し、ボタンクリックでトリガーしています。
つまり、ボタンクリックで
this.backgroundWorker1.RunWorkerAsync()
で、BackgroundWorker DoWork Eventを更新BindingSourceしようとして、 を更新しようとしていDataGridviewます。
したがって、BindingSourceリセットは別のクラスのメソッドで行われます。
DoWork Event
Class2 cl2 = new Class2();
cl2.UpdateBindingSource(class1BindingSource);
UpdateBindingSource Method
public void UpdateBindingSource(BindingSource bs)
{
Class1 c1 = bs.Current as Class1;
for (int i = 0; i < 1000; i++)
{
lock (bs.SyncRoot)
{
c1.MyProperty1 = i;
bs.ResetItem(0);
}
}
}
現在、独自のデータ ソースになれないなどの例外が発生しています。およびプロパティを、 を参照する値にBindingSource設定しないでください。DataSourceDataMemberBindingSource
私が自分でこれを行っている場合は、DoWork Eventを使用して制御スレッド自体でアイテムをリセットできますBeginInvoke method。
しかし実際には、アプリケーション シナリオをシミュレートしようとしています。だから私はこれをこの形式で解決したい。
誰でもこれについて私を助けることができますか?