Winforms加载窗口无法加载

时间:2017-04-28 21:03:26

标签: c# winforms

在我的(C#)应用程序中,用户在一个窗口中单击一个按钮,发生一系列耗时的计算,然后显示另一个窗口。我想在这些耗时的计算中加载一个加载窗口,以便用户知道发生了什么。

这些耗时的计算大多数都不是线程安全的,而且我读到的大部分内容都说我应该使用相同的线程并创建一个简单的Winform作为我的加载窗口。问题是加载窗口没有加载。这是一个小窗口,标签上写着“正在加载......”。当我打电话给LoadingWindow.Show();时,标签没有加载(只有一个白色的盒子应该在那里)。

我在Shown事件处理程序中添加了一些虚拟代码,但它没有触发。

我做错了吗?或者有没有办法强制线程等到加载窗口完全加载?

Code:
LoadingWindow loadingWindow = new LoadingWindow();
using (var firstDialog = new FirstDialog())
{
    var firstResult = firstDialog.ShowDialog();
    loadingWindow.Show();
    // do a bunch of time-consuming stuff
    loadingWindow.Close();
}

2 个答案:

答案 0 :(得分:3)

当您尝试显示加载屏幕时,将第一个对话框显示为对话框窗口。我建议首先尝试将loadingWindow显示为对话窗口,然后再显示另一个。代码如下。

LoadingWindow loadingWindow = new LoadingWindow();
using (var firstDialog = new FirstDialog())
{
    loadingWindow.ShowDialog();
    var firstResult = firstDialog.ShowDialog();
    // do a bunch of time-consuming stuff
    loadingWindow.Close();
}

答案 1 :(得分:1)

我必须刷新用于所有耗时计算的应用程序的显示。