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 没有完全显示。所以我只看到表格的框架。在德尔福(我的旧踩地)中,我会在 Show() 之后调用 Application.ProcessMessages 在 C# 中是否有等价物?有没有我可以在这种情况下使用的罐装“状态”表格?有没有更好的方法来解决这个问题?

提前致谢。大卫詹宁斯

4

4 回答 4

5

你需要在不同的线程中运行 do stuff 部分。
然后全部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 回答