Salve, a tutti, ho scritto una Sub che permette di copiare dei file da una cartella selezionata dall'utente in un'altra cartella del programma, in pratica devo eseguire una importazione file.
Il codice quindi apre una finestra di dialogo, per scegliere la cartella da dove prelevare i file, e una volta cliccato su ok, copia tutti i file nella cartella di destinazione
codice:
Dim Sorgente As New FolderBrowserDialog
Dim elenco() as string
Dim Destinazione as string
Dim Nomefile as string
Dim elementi() as string
' imposto la cartella di destinazione
Destinazione="Percorso mia cartella"
'textbox per verifiche
TextBox1.text="1"
'apro la finestra di dialogo per scegliere la cartella, e attendo il clcik su ok
If Sorgente.ShowDialog = Windows.Forms.DialogResult.OK Then
'textbox per verifiche
TextBox1.text="2"
'riempo l'array elenco con tutti i percorsi dei file contenuti nella cartella
elenco = Directory.GetFiles(Sorgente.SelectedPath)
'textbox per verifiche
TextBox1.text="3"
'cilco for che spazzola tutto l'array elenco
For Each x As String In elenco
'textbox per verifiche
TextBox1.text="4"
'quà mi sono inventato una modo per estrapolare il nome di ogni file
elementi = Split(x, "\")
Nomefile = elementi(elementi.Length - 1)
'copio il file dalla cartella scelta, alla cartella di destinazione
File.Copy(Sorgente.SelectedPath & "\" & Nomefile, Destinazione & "\" & Nomefile)
Next
'textbox per verifiche
textBox1.text="5"
Il codice funziona, e riesco a copiare tutti file.
Il problema è che quando i file iniziano ad essere parecchi, il computer impiega del tempo a svolgere tutta l'operazione, già con 50 file impiega circa 15 secondi.
Quindi volevo far apparire un messaggio che avvisa l'utente di attendere la fine dell'operazione, ancora meglio una barra di caricamento, ma già il messaggio andrebbe bene.
Però subito dopo aver cliccato ok il computer è come bloccato per una quindicina di secondi, fino a quando non finisce l'operazione.
Ho infatti aggiunto una TextBox1, e cambio il suo text man mano che il codice procede, per capire dove è che si inchioda.
Quando eseguo il codice, succede che sulla textbox compare giustamente 1, si apre la finestra di dialogo, scelgo la cartella, e clicco ok. A quel punto dovrebbe comparire 2, successivamente 3 , e 4, e poi alla fine 5, invece il computer è come bloccato per una quindicina di secondi, e poi compare subito il numero 5 sulla textbox.
Cioè dopo aver cliccato ok, non fà nemmeno in tempo a scrivere 2 sulla casella di testo, e quindi non fà nemmeno in tempo ad eseguire qualsiasi altra cosa, come il far apparire una finestra.
Però il codice viene eseguito correttamente perchè tutti i file vengono copiati senza problemi.
Ora chiedo se c'è una possibile soluzione a questa cosa, perchè così anche se funzionante, non può andare, l'utente non vedendo apparire nulla, e vedendo il programma bloccato, per diverso tempo, potrebbe interrompere l'esecuzione con il CTRL ALT CANC, ancora prima che il software abbia finito di copiare tutti i file.
Ringrazio tutti per la disponibilità