1
我一直在试图保持我的应用程序的启动画面挂起,而应用程序加载其初始数据,但我还没有成功找到一种方法来做到这一点。执行其他操作时刷新另一个线程的窗口?
这是我曾尝试代码:
SplashView splashScreen = new SplashView();
new Thread((ThreadStart)delegate
{
splashScreen.Dispatcher.Invoke((Action)delegate
{
while ((bool)splashScreen.Dispatcher.Invoke((Func<SplashView, bool>)delegate(SplashView sView) { return sView.IsEnabled; }, DispatcherPriority.Render, new object[] { splashScreen }))
{
splashScreen.Dispatcher.Invoke((Action<SplashView>)delegate(SplashView sView) { sView.UpdateLayout(); }, DispatcherPriority.Render, new object[] { splashScreen });
Thread.Sleep(10);
}
}, DispatcherPriority.Render, new object[] { });
}).Start();
可有人请告诉我如何做到这一点?
谢谢, 亚历克斯。
我不能在单独的线程中进行加载,因为它使用数据填充可观察的集合,这些数据不是多线程的,您是否也可以给我一些示例? –
只有当它们已经绑定到项目控件并且thrad安全可观察集合已经存在时(尽管它们实际上并不是多线程的) /2007/04/22/Thread-safe-observable-collection.aspx ....还有很多关于WPF启动画面加载的例子这个例子使用'PushFrames()'http://www.codeproject.com/KB/WPF/WPFsplashscreen.aspx ....这个例子使用多线程与脉冲/等待使用'AutoResetEvent' ... http:// szymonrozga达网络/博客/ p = 136。 –
关于使ObservableCollection线程安全的帖子非常有帮助谢谢! –