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