我在App_Startup ()中加载MainWindow。我想在加载窗口时显示进度条。但它不起作用:
void App_Startup(object sender, StartupEventArgs e)
{
Thread bootStrapThread = new Thread(new ThreadStart(runBootStrapProcess));
bootStrapThread.SetApartmentState(ApartmentState.STA);
bootStrapThread.IsBackground = true;
bootStrapThread.Start();
_loadingProgressBar = new loadingProgressBar();
_loadingProgressBar.ShowDialog();
}我想从线程加载窗口:
void runBootStrapProcess()
{
MetadataReader mr = new MetadataReader();
if (currentVersionNo.Equals(remoteVersionNo))
{
Application.Current.Shutdown();
}
else
{
MainWindow mw = new MainWindow();
mw.Show();
}
_loadingProgressBar.ShouldCloseNow = true;
}发布于 2013-03-31 07:09:22
您可以尝试这样做:
void runBootStrapProcess() {
MetadataReader mr = new MetadataReader();
if (currentVersionNo.Equals(remoteVersionNo)) {
Application.Current.Shutdown();
} else {
System.Windows.Application.Current.Dispatcher.BeginInvoke(
new Action(
() => {
MainWindow mw = new MainWindow();
mw.Show();
}));
}
_loadingProgressBar.ShouldCloseNow = true;
}当你想要显示窗口时,你基本上是从线程把它发送到主应用程序线程。因此,这会阻止应用程序在线程退出时关闭,因为MainWindow是从主线程显示的。
发布于 2013-03-31 05:32:54
我怀疑窗口缺少消息泵,因为WPF应用程序类及其调度程序在不同的STA线程上运行
https://stackoverflow.com/questions/15723373
复制相似问题