在非UI线程上运行模式对话框

SLa*_*aks 6 .net c# multithreading modal-dialog winforms

我正在编写一个简单的数据UI,使用标准的.Net数据绑定到SQL Server的类型化DataSet.

我有一个重新加载按钮,它调用Fill所有DataAdapter从数据库中获取新数据(如果另一个用户更改了数据).

这需要一些时间,在此期间UI被冻结.它必须在UI线程上运行,或者数据绑定事件处理程序抛出跨线程异常.

我想在UI线程连接到数据库时在后台线程上显示模式"Please Wait"对话框(以便可以设置动画).

如何在非UI线程上显示模式对话框?


编辑:我知道最好的做法是在后台运行操作,但由于数据绑定事件,我不能这样做.

mfe*_*old 8

你应该做相反的事情.在后台线程上运行长时间运行的进程,让UI线程自由响应用户操作.

如果要在处理过程中阻止任何用户操作,则可以使用多种选项,包括模态对话框.后台线程完成处理后,您可以通知主线程有关结果