如果我在后面的代码中使用函数,并且想要实现在状态栏中显示“正在加载...”,则以下内容是有道理的,但是从WinForms可以知道,它是一个NoNo:
StatusBarMessageText.Text = "Loading Configuration Settings...";
LoadSettingsGridData();
StatusBarMessageText.Text = "Done";
现在,我们从WinForms第1章第101类开始的工作是,在整个功能完成之前,该表单将不会向用户显示更改...,这意味着将永远不会向用户显示“正在加载”消息。需要以下代码。
Form1.SuspendLayout();
StatusBarMessageText.Text = "Loading Configuration Settings...";
Form1.ResumeLayout();
LoadSettingsGridData();
Form1.SuspendLayout();
StatusBarMessageText.Text = "Done";
Form1.ResumeLayout();
在WPF中处理此基本问题的最佳实践是什么?
最佳答案
最好和最简单:
using(var d = Dispatcher.DisableProcessing())
{
/* your work... Use dispacher.begininvoke... */
}
要么
IDisposable d;
try
{
d = Dispatcher.DisableProcessing();
/* your work... Use dispacher.begininvoke... */
} finally {
d.Dispose();
}