In questo caso specifico, si dovrebbe usare i thread al posto di un banale Application.DoEvents, che se non governato attentamente prendendo tutte le dovute preoccupazioni potrebbe anche portare ad errori di vario tipo (ad esempio, la chiusura del form principale prima che il processo di elaborazione termini).