我的应用程序(C#、VS2008)通过网络从数据库(SQL Server 2008 Express)加载信息。在(可能)较长的等待期间,我希望在不同的线程上运行一个“正在加载...”对话框,但前提是该操作需要超过特定时间段(例如 500 毫秒)。
所以,到目前为止,我的加载表单在 500 毫秒后显示(如果操作持续那么长时间),而没有设置加载对话框表单的所有者(即调用 LoadingDialog.ShowDialog()),但是当我尝试调用 LoadingDialog.ShowDialog(IWin32Window所有者)将所有者设置为主窗体(通过线程的参数传入)我得到关于跨线程访问控件的 InvalidOperationException。
我的基本问题是:我可以创建和 ShowDialog 一个将所有者参数设置为另一个线程上的表单的表单吗?我想这样做,以便加载对话框在应用程序的其余部分是模态的,即像任何其他对话框一样获得焦点并不允许在其他地方输入。
任何人都可以提供建议吗?我读过很多关于没有运气的闪屏,也有关于没有运气的 Invoke 和 BeginInvoke。我应该以不同的方式解决这个问题吗?
如果您不明白,请随时要求澄清。
谢谢(正如他们用法语所说的那样),
雅各布。