Qual é a diferença entre Invoking e BeginInvoking a MessageBox?

Em um formulário, compare

BeginInvoke (new Action (() => {
    MessageBox.Show ());
}));

com

Invoke (new Action (() => {
    MessageBox.Show ());
}));

Qual é a diferença e quando devo usar uma sobre a outra? Como o comportamento é afetado pela bomba de mensagens da MessageBox?

Eu fiz alguns testes e descobri queambos Os métodos bloqueiam a interface do usuário.

A única diferença é que Invoke é realmente chamado instantaneamente enquanto BeginInvoke leva um tempo (muito curto) até que o código seja executado. Isto é esperado.

questionAnswers(5)

yourAnswerToTheQuestion