Проблема не связана с ГИС, но возникла из-за того, что обратные вызовы System.Threading.Timer выстраиваются в очередь, так как они вызывались быстрее, чем они могли быть выполнены. Проблема была еще более усугублена тем фактом, что обратный вызов таймера выполнял Dispatcher.Invoke для основного потока пользовательского интерфейса для обновления таблиц данных. Dispatcher.Invoke блокировался, когда основной пользовательский интерфейс был занят, например, когда пользователь выполнял панорамирование и масштабирование карты, и до того, как таймер перезвонил, имел возможность завершить его, он был вызван снова.
Исправлена проблема с временной остановкой таймера, когда он начинает выполнять обратный вызов, и его повторным запуском после завершения обратного вызова. Кроме того, вместо того, чтобы делать Dispatcher.Invoke для обновления моих сеток, я изменил его на Dispatcher.BeginInvoke, чтобы избежать блокировки.