C# 当我关闭启动屏幕时,WPF应用程序关闭
我想在一个新线程中为我的WPF应用程序添加一个启动屏幕(因为在加载主窗口的数据时,我的动画启动屏幕会挂起)。代码: 我的问题是,当我关闭启动屏幕时,程序会关闭。因为C# 当我关闭启动屏幕时,WPF应用程序关闭,c#,wpf,multithreading,splash-screen,C#,Wpf,Multithreading,Splash Screen,我想在一个新线程中为我的WPF应用程序添加一个启动屏幕(因为在加载主窗口的数据时,我的动画启动屏幕会挂起)。代码: 我的问题是,当我关闭启动屏幕时,程序会关闭。因为.Show()不是阻塞调用,这意味着它将返回到实际关闭的窗口,因此应用程序很可能会一直运行到最后 使用.ShowDialog() 在调用此函数之前,请确保关闭启动屏幕。因为.Show()不是阻塞调用,这意味着它将返回到实际关闭的窗口,因此应用程序很可能会一直运行到最后 使用.ShowDialog() 在调用此命令之前,请确保关闭启动屏
.Show()
不是阻塞调用,这意味着它将返回到实际关闭的窗口,因此应用程序很可能会一直运行到最后
使用.ShowDialog()
在调用此函数之前,请确保关闭启动屏幕。因为.Show()
不是阻塞调用,这意味着它将返回到实际关闭的窗口,因此应用程序很可能会一直运行到最后
使用.ShowDialog()
在调用此命令之前,请确保关闭启动屏幕。我也做过类似的操作,这对我很有用
SplashScreenWindow splashScreenWindow = null;
Thread newWindowThread = new Thread(() =>
{
splashScreenWindow = new SplashScreenWindow();
splashScreenWindow.Show();
System.Windows.Threading.Dispatcher.Run();
});
newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.IsBackground = true;
newWindowThread.Start();
data loading...
_mainWindow.Show();
如果调用关闭太早,请从主窗口加载事件调用splashScreenWindow.close()
_mainWindow.Loaded += (s,ev) => {
splashScreenWindow.Dispatcher.Invoke(new Action(.splashScreenWindow.Close));
};
我也做过类似的事情,这对我很有用
SplashScreenWindow splashScreenWindow = null;
Thread newWindowThread = new Thread(() =>
{
splashScreenWindow = new SplashScreenWindow();
splashScreenWindow.Show();
System.Windows.Threading.Dispatcher.Run();
});
newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.IsBackground = true;
newWindowThread.Start();
data loading...
_mainWindow.Show();
如果调用关闭太早,请从主窗口加载事件调用splashScreenWindow.close()
_mainWindow.Loaded += (s,ev) => {
splashScreenWindow.Dispatcher.Invoke(new Action(.splashScreenWindow.Close));
};
你知道你可以把一个图像添加到你的项目中,把它的构建动作设置为“闪屏”,框架会帮你解决这个问题,对吧?我的闪屏不是图像。这是一个有动画的窗口。你知道你可以在你的项目中添加一个图像,将它的构建操作设置为“启动屏幕”,框架会为你解决这个问题,对吗?我的启动屏幕不是一个图像。这是一个有动画的窗口。我已将代码更改为:_splashScreenWindow.Close()_mainWindow.ShowDialog();但这对我没有帮助。在代码之外还有其他东西正在关闭你的应用程序。调用
.ShowDialog()
时,应等待窗口关闭。您确定不在其他地方终止吗?我已将代码更改为:_splashScreenWindow.Close()_mainWindow.ShowDialog();但这对我没有帮助。在代码之外还有其他东西正在关闭你的应用程序。调用.ShowDialog()
时,应等待窗口关闭。确实没有在其他位置终止吗?下一行\u mainWindow.Loaded+=(s,ev)=>{splashScreenWindow.Close();}
引发异常:System.InvalidOperationException。调用线程无法访问此对象,因为其他线程拥有它
我已将该行更改为\u mainWindow.Loaded+=(s,ev)=>{Dispatcher.Invoke(()=>\u splashScreenWindow.Close());}代码>,但它也不起作用。我只是编辑以添加dispatcher修复程序。我所做的另一件不同的事情是,我的主窗口是通过App.xaml StartupUri注册的,我没有调用mainWindow.Show()splashscreenWindow.close是从窗口加载的事件处理程序调用的。下一行\u mainWindow.Loaded+=(s,ev)=>{splashscreenWindow.close()}
引发异常:System.InvalidOperationException。调用线程无法访问此对象,因为其他线程拥有它
我已将该行更改为\u mainWindow.Loaded+=(s,ev)=>{Dispatcher.Invoke(()=>\u splashScreenWindow.Close());}代码>,但它也不起作用。我只是编辑以添加dispatcher修复程序。我所做的另一件不同的事情是,我的主窗口是通过App.xaml StartupUri注册的,我没有调用mainWindow.Show(),splashscreenWindow.close是从窗口加载的事件处理程序调用的。