Dissento parecchio con Erel circa i DoEvents.
Se essi funzionano come in VB.Net, servono a consentire al sistema operativo di far eseguire alcuni eventi (di sistema, non del proprio progetto, anzi, non solo del proprio progetto) dall'interno di un blocco di codice che impedirebbe la loro esecuzione.
Ad esempio, se io scrivo un ciclo come:
For I = 1 to 100000
Next
durante quei 100.000 cicli il sistema non fa altro, non consente altro, in pratica tutto il dispositivo si blocca finché non è completo l'ultimo "giro".
Quindi, all'interno di quel For/Next, mettendo DoEvents, qualsiasi evento di sistema potrà invece "scatenarsi" (avvenire, non so come dire).
Nella costruzione del contenuto di una ScrollView, come forse avviene riguardo alla risposta di Erel riportata da Luciano, si dovrebbe usare quello che in VB.NET è il Refresh e in b4a è Invalidate. Se però non si usa anche DoEvents, il sistema non ridisegna la ScrollView finché non è completata la costruzione di tutte le view inserite nella ScrollView.
Inoltre... vi pare che esisterebbe un comando DoEvents se fosse controindicato usarlo?!?!?!
Per quanto riguarda
@erosmax... dovrei vedere il codice per capire (cercare di capire!); considera che in alcuni casi, le cose in debug mode non funzionano, per via del fatto che, se non ho capito male, in debug mode tutto avviene in un unico thread, quello della Main, mentre in esecuzione è possibile che la tua app utilizzi più thread (dipende dalla struttura dell'app, se ne fa uso).
[P.S. Ho scritto una cosa imprecisa: durante quel ciclo senza il DoEvents al suo interno, è l'app che non riceve gli eventi dal sistema operativo (cosa che avviene, invece, se si inserisce il DoEvents)].