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線程安全的帖子非常有幫助謝謝! –