我有一个带有Geospace地图嵌入的程序。为了使地图响应灵敏(例如,当单击地图时触发的事件),地图的事件处理在单独的线程上处理。
我的问题是,当地图触发事件时,我的程序需要更新其GUI中的一些内容,并调用回地图以处理在地图上放置图片等操作。
我尝试将整个事件处理程序方法包装在this.Dispatcher.Invoke中,这会将我放回到主UI线程。这对于更新我的GUI非常有效,但当我回调到地图时,我仍然在UI线程上,这可能会在地图中引起一些问题。
基本上,为了使这个工作起来,每次我想要改变我的GUI控件时,我都必须运行dispatcher.invoke。是否有一种方法可以自动执行此操作而不用在每个调用中都包装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
}