В форме сравните
BeginInvoke (new Action (() => {
MessageBox.Show ());
}));
с
Invoke (new Action (() => {
MessageBox.Show ());
}));
В чем разница, и когда я должен использовать один над другим? Каково поведение, вызванное насосом сообщений MessageBox?
Я провел некоторое тестирование и обнаружил, что оба метода блокируют пользовательский интерфейс.
Единственное различие заключается в том, что Invoke фактически вызывается мгновенно, а BeginInvoke занимает (очень короткое) время, пока код не будет запущен. Этого следует ожидать.