いくつかのコンボボックスとグリッドビューを持つ winform があります。
最初に、行と列を使用してグリッドビューを作成し、データを入力していません。
グリッドへのデータの入力は、すべての行をループして列ヘッダーを読み取り、それに応じて各セルに異なる色とデータを適用する長時間実行タスクです。
私が達成しようとしているのは、フォーム ロード イベントで上記のようにグリッドをロードし、フォームがロードされた後にグリッドへのデータの入力を開始して、ユーザーが何が起こっているかを確認できるようにすることです。コンボボックスの値に応じてデータをロードするため、コンボボックスの値の変更にも同じことが当てはまります。
私が試したことは、このようなものです...
フォームの読み込みでメソッドを呼び出しています
private void LoadForm()
{
DataBind(); // this will load the initial grid without cell data
this.BeginInvoke((MethodInvoker)this.LongRunningProcess1);
this.BeginInvoke((MethodInvoker)this.LongRunningProcess2);
}
しかし、それでも時間がかかり、レスポンシブ UI がありません。
私もこのようなことを試しましたが、運がありません....
ThreadStart ts = LongRunningProcess1;
Thread t1 = new Thread(ts);
t1.Start();
また、バックグラウンド ワーカーを使用して実行時間の長い操作を完了すると、「クロス スレッド操作」の問題が発生します。
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
LongRunningProcess1();
LongRunningProcess2();
}
これを機能させるための助けに感謝します..
ありがとう
アップデート
私は本当にクールなソリューションを見つけましたUpdating Your Form from Another Thread without Making Delegates for Every Type of Update
答えてくれてありがとう!!!