C# 加载主窗口时wpf溅屏滞后
我正在做一些WPF应用程序,今天我遇到了一些麻烦。我需要在初始化主窗口时显示启动屏幕。我的代码如下:C# 加载主窗口时wpf溅屏滞后,c#,wpf,backgroundworker,C#,Wpf,Backgroundworker,我正在做一些WPF应用程序,今天我遇到了一些麻烦。我需要在初始化主窗口时显示启动屏幕。我的代码如下: public MainWindowView() { OnLoad(); } public void OnLoad() { worker = new BackgroundWorker(); lw = new WaitWindowView(); lw.Show(); worker.DoWork += delegate(object s, DoWorkEven
public MainWindowView()
{
OnLoad();
}
public void OnLoad()
{
worker = new BackgroundWorker();
lw = new WaitWindowView();
lw.Show();
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
Dispatcher.Invoke(new Action(delegate()
{
InitializeComponent();
DataContext = new NavBarVM();
}), DispatcherPriority.Background);
};
worker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
lw.Close();
};
worker.RunWorkerAsync();
}
以上代码正在运行。但是splash screes是滞后的。您对
Dispatcher.Invoke的调用将使DoWork
处理程序中的代码在UI线程上运行,因此像这样使用BackgroundThread
是毫无意义的。此外,您也不能在后台线程上调用InitializeComponent
,这样不会加快速度
显示启动屏幕的正常方式可以在我对问题的回答中找到,这里是关于堆栈溢出的。如果您有很多初始化代码(您,而不是框架),那么您可以在启动屏幕窗口中执行此操作,并在关闭启动屏幕之前将加载的对象传递回主窗口。延迟是指控件(按钮/任何东西)不响应鼠标输入吗?或者启动屏幕内有动画?启动屏幕内的动画比较滞后我认为主窗口和启动屏幕必须分开。在我的情况下,启动屏幕没有持续工作。小停再动画小停再动画等。