У меня есть программа со встроенной в нее картой геопространства.Обработка событий для карты обрабатывается в отдельном потоке, чтобы обеспечить отзывчивость карты (например, события, которые возникают при нажатии на карту).
Проблема, с которой я столкнулся, заключается в том, что карта запускает событиемоя программа должна обновить некоторые вещи в своем графическом интерфейсе, а также вызвать обратно карту, чтобы обработать размещение изображений на карте.
Я попытался обернуть весь метод обработчика событий в this.Dispatcher.Invoke, который помещаетя вернулся в основной поток пользовательского интерфейса.Это прекрасно работает для обновления моего графического интерфейса, но когда я перезваниваю на карту, я все еще нахожусь в потоке пользовательского интерфейса, который может вызвать некоторые проблемы на карте.
По сути, для того, чтобы это работало, ямне придется запускать 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
}