Ответ 1
msdn говорит, что Если несколько вызовов BeginInvoke выполняются с одинаковым DispatcherPriority, они будут выполняться в том порядке, в котором были сделаны вызовы
Но если вы обращаетесь к Dispatcher
из нескольких потоков, то Любые члены экземпляра не гарантируют безопасность потоков.