我必须在另一个线程中显示进度窗口。 这是我做了什么:在新线程中加载窗口
Thread loadT = new Thread(new ThreadStart(() =>
{
Loading ldd = new Loading();
ldd.SetContentMessage("Loading...");
ldd.Closed += (s, ec) =>
Dispatcher.CurrentDispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
ldd.ShowDialog();
}));
loadT.SetApartmentState(ApartmentState.STA);
loadT.Start();
//do something
loadT.Abort();
但我不认为这是正确的方式。我想用这个窗口进行不同的处理,我也想把窗口设置在其他的窗口上。哪种方法最好? Ty! Ty!
不要在除主/ UI线程以外的任何线程上做UI东西。这是一条基本规则。相反,通过在工作线程上正确调用UI线程上的更新代码来更新进度指示器。 –
切换你的计划。将工作推送到另一个线程,并在主线程上启动/显示/控制加载窗口。 – Skintkingle
不幸的是我必须在主线程中执行这个操作。我找到了这篇文章(https://strukachev.wordpress.com/2011/01/09/wpf-progress-window-in-separate-thread/),这是一个好方法吗? –