DispatchCommand является синхронным, однако некоторые из выполняемых им команд могут запускать асинхронные операции, и у команд нет способа вернуть дескриптор этих операций.
Для этих конкретных команд я бы рекомендовал не отправлять их как команды, а вместо этого напрямую вызывать API-интерфейсы высокого уровня для выполнения этих операций. Например, IdeApp.ProjectOperations.Build возвращает дескриптор IAsyncOperation, который можно заблокировать с помощью его метода WaitForCompleted. Вы можете использовать IdeApp.Workspace для открытия проектов и получения указателей на открытые проекты, установки активной конфигурации и т. Д.