【发布时间】:2015-07-02 04:43:12
【问题描述】:
在我的项目中,我需要加载“项目”。 我在 foreach 循环中加载所有这些“项目”。 在这个 foreach 循环中,我想显示一个带有进度条的状态窗口,每次加载新项目时都会更新它。
我现在的问题是,带有进度条的状态窗口不会更新。 看起来它就像我项目中的所有其他窗口一样“冻结”了(我还让程序将它正在做的事情打印到控制台中)。
代码如下:
Status StatusWd = new Status();
StatusWd.pb_Status.Maximum = animes.Length;
StatusWd.SetStatusText("Animes in AnimeBibliothek laden...");
StatusWd.Show();
bool white = false;
bool black = true;
foreach (string anime in animes)
{
if (white)
{
//Not working..
AB_Output.WriteLine(GetTime() + "Weißes User Control laden...");
AddWhiteUcpToStk(anime);
white = false;
black = true;
}
else if (black)
{
AB_Output.WriteLine(GetTime() + "Schwarzes User Control laden...(" + anime + ")");
AddBlackUCPToStk(anime);
//white = true;
//black = false;
}
StatusWd.pb_Status.Value = Array.IndexOf(animes, anime);
}
StatusWd.Close();
不仅仅是进度条不会更新。此外,窗口中的标签在值更改时会更新,不会更改。我调试了它,进度条的值发生了变化,标签内容也发生了变化......
如果您能解释一下您的解决方案,那就太好了。
LG 辛姆森
【问题讨论】:
-
UI 和您的工作在同一个线程上运行。您应该编写异步加载方法来加载您的项目。如果没有看到阅读您的项目的逻辑,我无法提供使其异步的建议,但是,您可以使用 async、await 和 TPL 来实现它。