通常加载N多东西会非常慢
言简意赅 直接上步骤
1.空界面 随便怎么画
2.viewmodel
初始化里面使用代码
public LaunchViewModel()
{
DispatcherHelper.Initialize();
Task.Run(async () =>
{
await Task.Delay(600);
await OnStartupInit();
});
}
说明:卡600毫秒是为了 防止线程里面 有需要主线程调用的东西,依然会不卡住
3.初始化中有需要界面交互,的内容的需要包装一下
Task.Run(async () =>
{
await Application.Current.Dispatcher.InvokeAsync(() =>
{
var mintionWindow = new Window();
mintionWindow.ShowDialog;
});
});
说明: 如果不await 这个界面不会卡住
4.有些需要主线程执行的
await Application.Current.Dispatcher.InvokeAsync(() =>
{
//主线程执行的代码
});
说明:这样的话 会等待主线程调用 而不是抢着调用