模式“请等待”对话框,其中包含后台流程中可能的用户界面

时间:2016-04-04 10:56:22

标签: c# winforms modal-dialog backgroundworker

我有一个长时间运行的过程,我们称之为ProcessA,所以我想设置一个“Please Wait ...”类型对话框,以阻止用户尝试与应用程序进行交互并确保它们不会“不回应“类型信息/错误(例如提供结束过程的机会)

我的第一个想法是设置一个后台工作器来完成工作并在前台显示一个模态对话框,并在ProcessA完成时关闭它。然而,问题是ProcessA最后会抛出自己的对话框,然后进行一些打印。

因此,如果用户点击应用程序的任何位置,ProcessA的对话框将在应用程序窗口后面消失。

那么如何显示“Please Wait”,但是当ProcessA运行时没有显示为“Not Responding”时,还会阻止与主应用程序的交互?

ProcessA从DLL运行,我无法访问其代码。 (所以当它准备好显示自己的对话框时,我不能简单地关闭“请等待”)

2 个答案:

答案 0 :(得分:0)

这是一个天真的样本。

ObservableCollection<Employee>

答案 1 :(得分:0)

我最终的解决方案只是使用无模式&#34;请等待&#34;,不完美,但希望现在可以接受......

_pleaseWaitForm.Show();
_pleaseWaitForm.Refresh();

DisableProcessWindowsGhosting();

ProcessA(); // Long running process

_pleaseWaitForm.Close(); // or maybe should it be Dispose()?

由于ProcessA绑定了用户界面,因此无论如何都会阻止用户进行交互,DisableProcessWindowsGhosting()会阻止&#34;无响应&#34;消息或用户关闭应用程序,如果他们不耐烦。

有点草率,所以我仍然愿意接受更优雅的答案......