Dispatcher.BeginInvoke
добавляет делегата в очередь событий диспетчера.
Очередь обрабатывается только внутри Run()
.
Run()
является блокировкойвызов, который будет выполняться вечно (или до тех пор, пока вы не вызовете InvokeShutdown()
).
Если вы снова вызовете BeginInvoke()
, Run()
сразу увидит нового делегата и выполнит его немедленно.(Или как только это бесплатно)