Salve a tutti, ho un problema relativo a una sub, che si occupa di scaricare da un server alcuni File. premetto subito che è il primo programma che scrivo in vB, ho fatto un porting da un client scritto da me in java, quindi perdonate la poca eleganza del codice, ma ho fatto tutto con doc alla mano senza neanche sapere come si dichiarava una variabile xD. Sicuramente il problema, deriva da un algoritmo non molto corretto visto che ho avuto lo stesso problema nella controparte java. dato un array di alcuni File,(non è molto efficiente lo so, più avanti farà in modo che legga da un xml o altro soltanto i nomi dei file da scaricare senza fare il pappardellone) il client legge una versione dal server e se non corrisponde a quella istallata dal client blocca il tasto di avvio e costringe l'utente ad avviare una patch che si occupa di scaricare i contenuti. Il funzionamento è corretto, o almeno il suo lo fa. i file vengono scaricati senza problemi l'unico problema è che la barra di caricamento non avanza e non aggiorna l'utente circa lo svolgimento della funzione. il client resta congelato e soltanto quando finisce tutti i download da un +4 alla barra sblocca lo start client lo colora e tutto il resto. quindi il problema sta nel ciclo. come posso rendere efficiente questa funzione di download? a ogni file deve: comunicare il file che sta scaricando, dare il suo +6 alla barra(neanche questo è tanto bello a livello di codice dovevo gestire meglio a seconda della grandezza dei file, ma mi accontento di poco per il momento) e poi finito il download avvisare che il file è stato scaricato e riniziare con l'altro file.
Private Sub patchButton_Click(sender As Object, e As EventArgs) Handles patchButton.Click
Dim fileDownload(15) As String
fileDownload(0) = "icon.eix"
fileDownload(1) = "icon.epk"
fileDownload(2) = "locale_tr.epk"
fileDownload(3) = "locale_tr.eix"
fileDownload(4) = "Metin2_patch_ZodiakMaps.eix"
fileDownload(5) = "Metin2_patch_ZodiakMaps.epk"
fileDownload(6) = "metin2_patch_ZodiakMonster.eix"
fileDownload(7) = "metin2_patch_ZodiakMonster.epk"
fileDownload(8) = "metin2_patch_ZodiarkArmor.eix"
fileDownload(9) = "metin2_patch_ZodiarkArmor.epk"
fileDownload(10) = "metin2_patch_ZodiarkEffect.eix"
fileDownload(11) = "metin2_patch_ZodiarkEffect.epk"
fileDownload(12) = "metin2_patch_ZodiarkWeapon.eix"
fileDownload(13) = "metin2_patch_ZodiarkWeapon.epk"
fileDownload(14) = "root.eix"
fileDownload(15) = "root.epk"
For Each item As String In fileDownload
consoleLabel.Text = "Aggiornamento " + item + "..."
If My.Computer.FileSystem.FileExists(currentPath + "\pack\" + item) Then
My.Computer.FileSystem.DeleteFile(currentPath + "\pack\" + item)
My.Computer.Network.DownloadFile(urlResource + item, currentPath + "\pack\" + item)
ProgressBar1.Value = +6
If My.Computer.FileSystem.FileExists(currentPath + "\pack\" + item) Then
consoleLabel.Text = item + "Aggiornato Correttamente"
ProgressBar1.Value = +6
End If
Else
My.Computer.Network.DownloadFile(urlResource + item, currentPath + "\pack\" + item)
consoleLabel.Text = item + "Aggiornato Correttamente"
ProgressBar1.Value = +6
End If
Next
ProgressBar1.Value = +4
consoleLabel.Text = "Client Aggiornato Correttamente"
consoleLabel.ForeColor = Color.Green
patchButton.Enabled = False
startClient.Enabled = True
startClient.BackColor = Color.Orange
My.Computer.FileSystem.DeleteFile(currentPath + "\" + versionFile)
My.Computer.FileSystem.WriteAllText(currentPath + "\" + versionFile, versionServer, False)
versionLabel.Text = "Version: " + My.Computer.FileSystem.ReadAllText(currentPath + "\" + versionFile)
Me.Update()
End Sub