こんにちは私はいくつかのテーブルを含むデータセットを持っています。 これらのテーブルの1つはバインディングソースにバインドされています。このバインディングソースは、次にdatagridviewにバインドされています。それは、HTTP他のスレッド経由でdatagridviewにバインドされたdataset.datatableを更新するには
を介してデータを取り込むように、データセットテーブルは、単一のバックグラウンドスレッドを介して更新される
これは明らかにそれが別のスレッドから更新されるように、クロススレッドエラーをスローするのDataGridViewを引き起こします。
私の質問は、完全に書き直すことなくこれを回避する方法です。バックグラウンドスレッドが作成する何らかのバッファからデータセットを更新するUIスレッドを持つことができたことに気がつきましたが、もう一度やり直しています。私が見逃した簡単な方法はありませんか?私がここで見ている例のほとんどは、私が再び始める必要があるように思えます。
あなたは '新しいアクション'を作成する必要はありません。これを行うことができます: 'Task.Run(()=> ...);' – VMAtm
@VMAtm良い点。私はコンパイル時に同じになると思うが、簡潔にする方が良い。 – Crowcoder
あなたは正しいですか?非同期/待機を使用していません。私はこのメソッドを試してみたことがなかった。別のスレッドと同じエラーが出るだろうと推測したからだ。 また、Invokeを使用して、データセット操作のものをUIスレッドに戻すように見えますが、UIスレッドはロックアップされ、応答がなくなります。データの処理時間が原因です。私は見直しをして、見た目でこれをやり直さなくてはなりません。 – JohnFrendras