我有一個嵌入Geospace地圖的程序。地圖的事件處理在單獨的線程上處理,以保持地圖響應(例如,點擊地圖時觸發的事件)。C#,WPF,需要時自動調用Dispatcher.Invoke?
我遇到的問題是當地圖觸發事件時,我的程序需要更新GUI中的某些內容,並且還要回到地圖中以處理在地圖上放置圖片。
我嘗試在this.dispatcher.Invoke中包裝整個事件處理程序方法,這使我回到主UI線程。這對於更新我的GUI非常適用,但是當我回到地圖中時,我仍然在UI線程上,這可能會導致地圖中出現一些問題。
基本上,爲了使這項工作,我將不得不運行dispatcher.invoke每次我想改變我的gui控制。有沒有一種方法可以自動執行此操作,而無需在dispatcher.invoke中包裝每個調用?我希望這一切都有道理。
繼承人爲我在談論該事件的一些示例代碼..
private void Map_OnMapClicked(object sender, MapClickedEventArgs e)
{
this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
{
// Do something to update my gui
}));
Map.DoSomethingInTheMap();
this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
{
// Do something to update my gui
}));
//etc etc etc
}