gpt4 book ai didi

c# - 在 WPF 中,Windows 窗体中的 Suspend/ResumeLayout() 和 BackgroundWorker() 等同于什么

转载 作者:可可西里 更新时间:2023-11-01 08:02:34 26 4
gpt4 key购买 nike

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

关于c# - 在 WPF 中,Windows 窗体中的 Suspend/ResumeLayout() 和 BackgroundWorker() 等同于什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/82847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com