codice:
private bool download(string path_download, string path_local)
{
bool result = false;
HttpWebRequest lHttpWebRequest;
HttpWebResponse lHttpWebResponse;
Stream lHttpWebResponseStream;
FileStream lFileStream = new FileStream(path_local, FileMode.Create);
byte[] byteBuffer = new byte[999];
int bytesRead;
try
{
lHttpWebRequest = (HttpWebRequest)WebRequest.Create(path_download);
lHttpWebResponse = (HttpWebResponse)lHttpWebRequest.GetResponse();
lHttpWebResponseStream = lHttpWebRequest.GetResponse().GetResponseStream();
progressBar1.Maximum = Convert.ToInt32(lHttpWebResponse.ContentLength);
double progress_counter = 0;
do
{
bytesRead = lHttpWebResponseStream.Read(byteBuffer, 0, 999);
lFileStream.Write(byteBuffer, 0, bytesRead);
if((progressBar1.Value + bytesRead) <= progressBar1.Maximum)
{
progressBar1.Value += bytesRead;
}
else
{
progressBar1.Value = progressBar1.Maximum;
}
double progress_now = Math.Floor(((progressBar1.Value/100) * 100) / (progressBar1.Maximum/100));
if(progress_now > progress_counter)
{
label3.Text = String.Format("{0}% of {1}kb", progress_now.ToString(), (progressBar1.Maximum/1000).ToString("#,#"));
Application.DoEvents();
progress_counter++;
}
}while(bytesRead > 0);
lHttpWebResponseStream.Close();
result = true;
}
catch(Exception download_error)
{
MessageBox.Show(download_error.ToString());
}finally
{
lFileStream.Close();
}
return result;
}
Ecco, ho creato questo metodo per il download e per l'avanzamento della barra. Il problema è che il download funziona solo con files di parecchi mega e quando arriva al 99% si blocca.
Qualcuno sa aiutarmi perfavore?
Grazie!