MainForm がデータベース関連の作業を行っている間に、プログレスバーを含む新しいフォームを表示したいと考えています。UI を新しいスレッドに渡したくないということを読んだので、この問題を回避するための最善の解決策は何だろうか?
UI と MainForm への多数の呼び出しを使用するため、別のスレッドでデータベース関連の作業を行うことはできません。MainForm のスレッドはクラス内で動作しているため、私も使用できませんApplication.DoEvents()
。私が知る限り、クラスの親への呼び出しを行うべきではありません。
任意の提案をいただければ幸いです!
編集
私が実際に疑問に思っていたことを明確にするために:
私のプログラムは次のようになります。
... Content = DatabaseClass.LoadContent();
ApplyContentToUI(Content);
そして、私がやりたかったのは次のことでした:
//Show a form here with a progressbar
... Content = DatabaseClass.LoadContent();
ApplyContentToUI(Content);
//Close the form here
しかし、ApplyContentToUI を実行する時間はおおよそだったので。1秒私は次のことをすることにしました:
//Show a form here with a progressbar
... Content = DatabaseClass.LoadContent();
//Close the form here
ApplyContentToUI(Content);
私とは異なり、UI のリロード中にプログレスバーを表示する必要がある場合は、以下のコメントと回答を参照することをお勧めします。