Sì, ero rimbambito io ieri sera. Comunque anche quel codice comporta un tempo di elaborazione notevole, e potrebbe generare errori di overflow (non per altro, ma perchè la listbox potrebbe non contenere così tanti elementi).
Se volete contare i files con una funzione ricorsiva, beh, non c'è modo di evitare lo sbilanciamento dello stack se si elabora un intero volume. Il loop è decisamente meglio ma sicuramente NON su una listbox, per due motivi:
- la collezione Items è debolmente tipizzata, quindi ad ogni aggiunta bisogna eseguire un cast sul tipo object;
- listbox è un controllo visuale e si aggiorna ogni volta che viene aggiunto un elemento, senza contare tutti gli eventi che vengono lanciati, anche se i sottoscrittori non esistono.
Per una performance decisamente migliore urge utilizzare una collezione adatta, ad esempio List(Of T). Inoltre, dato il tempo impiegato, sarebbe utile eseguire il tutto in background o in un thread separato, così da non bloccare l'applicazione. Application.DoEvents() è una soluzione non troppo elegante.
|