В IDE много асинхронных источников (сборка, MCP, LSP и т.д.). Размазанный `Post`/`Invoke` по коду усложняет сопровождение и повышает риск обращения к UI не с UI-потока.
Обновления ViewModel и UI после работы в фоне по возможности проходят через **одну согласованную точку** маршалинга: **`IUiScheduler`** и **`UiScheduler.Default`** (реализация на `Dispatcher.UIThread`), а не произвольные вызовы диспетчера по всему коду.