我正在尝试显示一个 WPF 弹出窗口,它将指示一些进展:
问题是在 Thread.Sleep 完成之前没有显示弹出窗口,这只是一个示例,在我的程序中,我有复杂的 IO 和 DB 逻辑需要同步执行,并且需要在弹出窗口上显示进度。
这是我的示例代码:
private ProgressBar m_ProgressBar;
private void buttonDoWork_Click(object sender, RoutedEventArgs e)
{
var progressPopup = new Popup { PopupAnimation = PopupAnimation.Fade, StaysOpen = true, Height = 150, Width = 260 };
m_ProgressBar = new ProgressBar
{
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Stretch
};
progressPopup.Child = m_ProgressBar;
progressPopup.IsOpen = true;
Thread.Sleep(5000);
this.m_ProgressBar.Value = 25;
Thread.Sleep(5000);
this.m_ProgressBar.Value = 50;
Thread.Sleep(5000);
this.m_ProgressBar.Value = 75;
Thread.Sleep(5000);
this.m_ProgressBar.Value = 100;
}
更新
问题是阻塞主线程的逻辑需要留在主线程上,我无能为力。有没有办法在单独的线程上运行弹出窗口?