WaitDialogForm.ShowDialog() 不处理其他代码
本文关键字:处理 其他 代码 ShowDialog WaitDialogForm | 更新日期: 2023-09-27 18:34:38
DevExpress的新手,我的公司被困在9.3上
我有这个非常小的代码片段:
wait = new DevExpress.Utils.WaitDialogForm("Please wait...", "Performing SVN check");
wait.Visible = false;
wait.ShowDialog();
ParseSVNResults(CheckSVN());
wait.Close();
我的等待对话框显示,但代码永远不会继续。我在 ParseSVNResults 上放了一个断点,当我运行代码时,它会到达那一行。
如果我只调用 Show(( 而不是 ShowDialog((,它可以正常工作,但如果用户在等待表单之外单击,这会产生不良行为。应用程序"变白",就像它停止响应一样,鼠标变为那个旋转的小圆圈图标。此外,对话框窗体显示的沙漏不会旋转。愚蠢的小细节,但看起来整个应用程序都崩溃了。
ShowDialog
根据设计,"阻止"代码,直到您关闭对话框。 这就是全部目的。
Show()
导致所有内容变白的原因是您的工作发生在 UI 线程中。 处理此问题的正确方法是将您的工作(ParseSVNResults
(移动到后台线程中,通过类似BackgroundWorker
或Task
。