Qual é a diferença entre Invoke () e BeginInvoke ()

Imaginando qual a diferença entre BeginInvoke()e Invoke()são? Principalmente para que cada um seria usado. EDIT: Qual é a diferença entre criar um objeto de threading e chamar invocar sobre isso e apenas chamar BeginInvoke()um delegado? Ou eles são a mesma