如果我在后面的代码中使用函数,并且想要实现在状态栏中显示“正在加载...”,则以下内容是有道理的,但是从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();
}

09-07 10:19