桂忙着弹出

我有一个gui。 当我按下按钮时,我的gui与软件交互。 这需要几秒钟。 在这段时间里,我想要一个对话框,弹出或类似的东西出现在我的gui面前,告诉用户等待(带有消息)。 当gui与软件的交互完成后,弹出窗口自动关闭,用户可以再次正常与gui交互。

有没有办法做到这一点?

诀窍是剥离一个线程,以免绑定UI线程。 这通常通过BackgroundWorker实现。

有一个演练用于在codeplex上设置所有这些。 当backgroundworker完成时,加载表单将关闭。

以下简要介绍如何使用BackgroundWorker组件完成此操作。

将BackgroundWorker放到表单上,然后在按钮的Click处理程序中显示当前表单上方的弹出指示器Form,并使用RunWorkerAsync方法启动工作程序。 处理工作者DoWork事件,并处理程序,运行长时间运行的任务。 还处理工作人员已完成的事件(现在不确定它是如何完全调用的),然后隐藏弹出窗体。 您可以在DoWork事件eventargs(Result属性)中跟踪操作结果,还可以在长时间运行的任务期间使用已完成的事件eventarg的Error peroperty捕获任何exception。 可以使用worker的ReportProgress方法在DoWork处理程序中报告操作进度,并且可以使用worker的相应事件在GUI中捕获它。

您还可以将鼠标光标设置为在长时间运行之前等待

this.Cursor = Cursors.WaitCursor; 

并且恢复正常,然后就完成了

 this.Cursor = Cursors.Default;