我對WPF很陌生,並且在WPF中進行線程化,並在我的程序中成功實現了bing地圖控件。問題在於,打開控件時,控件需要很長時間來加載和減慢程序本身。加載時間從大約2秒增加到大約20秒,這是不可接受的。WPF Bing地圖控制性能低下
我的想法是,將bing地圖控件加載到單獨的線程中,從而不會降低性能。我一直在試圖做到這一點,但我的UI不斷被地圖控件的加載過程阻塞。
Here's使用調度的例子:
private init()
{
Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
{
// Background thread: I would like to load the map here
Map map = new Map();
map.CredentialsProvider = providerKey;
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new Action(() =>
{
// Back to the UI thread
// How do I assign the loaded Map to this thread?
mapElementOnUI = map;
mapPanel.Children.Add(mapElementOnUI);
}));
}
));
thread.Start();
//Load the rest of the GUI here
}
如果我處理這樣,我得到一個InvalidOperationException(無STA線程)的線程。如果我的代碼更改爲以下,我的UI塊,而加載地圖控制:
private init()
{
Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
{
// Background thread
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new Action(() =>
{
// Back to the UI thread
mapElementOnUI = new Map();
mapElementOnUI.CredentialsProvider = providerKey;
mapPanel.Children.Add(mapElementOnUI);
}));
}
));
thread.Start();
//Load the rest of the GUI here
}
從來就也一直在努力執行通過的await和異步沒有成功的解決方案。是否有可能在單獨的線程中加載地圖控件?有人可以用一段代碼幫我解決這個問題嗎?非常感謝!
感謝您的評論:-)它幫了我,看到我的答案,如果你有興趣... – Chris