gpt4 book ai didi

c# - 有什么命令可以立即更新用户界面吗?

转载 作者:行者123 更新时间:2023-11-30 13:12:42 27 4
gpt4 key购买 nike

我想用这段代码更新从运行 1 到 100 的进度条。

for (int i = 0; i <= 100; i++) {
System.Threading.Thread.Sleep(100);
progressBar1.Value = i;
}

但结果是,UI 卡住,直到循环结束。

我知道 Dispatcher 可以提供帮助,但我不想拆分功能。

是否有任何命令可以立即更新 UI,例如..

for (int i = 0; i <= 100; i++) {
System.Threading.Thread.Sleep(100);
progressBar1.Value = i;
UpdateUINow();
}

编辑:我正在使用 WPF,并且我使用 Thread.Sleep 来模拟长时间运行的进程。

事实上,我想要像 Application.DoEvents 这样的任何命令。但是我在 WPF 中找不到这个命令。

最佳答案

不要在 UI 线程中休眠。它会卡住您的 UI - 这是一件坏事。

要么有某种类型的计时器(使用正确类型的计时器,你应该能够让它在你的 UI 线程中触发)要么使用一个单独的线程(通过 BackgroundWorker,一个新的单独线程,或 ThreadPool) 并使其回调到 UI 线程以更新它。

Application.DoEvents 是 WinForms 中的一个 hacky 解决方法,但您提到 Dispatcher 的事实表明您正在使用 WPF - 是这样吗?您应该使用的计时器类型(如果您想使用该解决方案)将取决于您使用的 UI 框架。

关于c# - 有什么命令可以立即更新用户界面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765051/

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