L'uso di DoEvents dovrebbe essere evitato nella maggior parte dei casi.

Lavorando con VB.NET, e quindi con il .NET Framework, fai ricorso ad un thread che è lo strumento ideale per poter eseguire operazioni lunghe in modo asincrono senza bloccare l'applicazione, evitando - se gestito bene - effetti collaterali indesiderati.

Ciao!