Не уверен, что такое DispatcherObjectInvoker
, но я предполагаю, что это оболочка для Dispatcher
или чего-то еще.
Если это так, если вы звоните Invoke()
, это блокирующий вызов. Таким образом, ваш второй звонок гарантированно будет после вашего первого звонка.
Однако, если вы хотите, чтобы это были асинхронные вызовы, вы должны использовать BeginInvoke
. Параметр DispatcherPriority
помогает гарантировать, что вызовы, сделанные на тот же уровень приоритета, находятся в том же порядке. Таким образом, если _layouts
относится к приоритету DispatcherPriority.Loaded
(или любому другому приоритету), вызовы гарантированно будут в том же порядке.
Проверьте MSDN документацию .