1

完了するまでに数秒かかる可能性のあるC#コードのセクションの冒頭に、「お待ちください...」というラベルが付いた非モーダルフォームを表示したいと思います。

WaitForm myWaitForm = null;

try
{
  // if conditions suggest process will take awhile
  myWaitForm = new WaitForm();
  myWaitForm.Show();

  // do stuff
}
finally
{
  if (myWaitForm != null)
  {
    myWaitForm.Hide();
    myWaitForm.Dispose();
    myWaitForm = null;
  }
}

問題:残りのコードがスレッドを拘束する前に、WaitFormが完全に表示されません。そのため、フォームのフレームのみが表示されます。Delphi(私の古い踏み台)では、Show()の後にApplication.ProcessMessagesを呼び出します。C#に同等のものはありますか?このような状況で使用できる缶詰の「ステータス」フォームはありますか?これにアプローチするためのより良い方法はありますか?

前もって感謝します。デビッドジェニングス

4

4 に答える 4

5

別のスレッドでdostuff部分を実行する必要があります。
そして、すべてここでクラスmyWaitForm.Show()
を見てくださいBackgroundWorker

于 2010-05-31T11:44:27.430 に答える
1

「何かをする」コードを他のスレッドに移動することをお勧めします。Application.DoEvents() を使用してフォーム メッセージを処理します。

于 2010-05-31T11:51:10.430 に答える
1

「他のスレッド」の提案には同意しますが、単純で短い目的のために Application.DoEvents() で十分です。

于 2010-05-31T13:09:37.010 に答える
0

あなたが探している用語は「スプラッシュスクリーン」です。

関連するコメントをいくつか紹介します。 https://stackoverflow.com/search?q=splash+screen+c%23

于 2010-05-31T11:45:48.643 に答える