in delphi-
win32 habe ich den Fortschritt in der Regel über PostMessage mitgeteilt. Da stört es auch nicht wenn es mal etwas verzögert ankommt.
In der BCL laufen sowohl Control.Invoke als auch BeginInvoke über PostMessage, aber grundsätzlich hast du recht: Wenn man nicht explizit auf einen synchronen Aufruf angewiesen ist, ist BeginInvoke eigentlich immer zu bevorzugen. Und warum nicht auch beim letzten Aufruf
?