Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C#] Barra Download

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    118

    [C#] Barra Download

    Salve, volevo chiedervi come potevo risolvere il mio problema: in pratica nel mio programma devo inserire una progressivebar che misuri il completamento di un download di file dal web. Man mano che il file viene scaricato la barra aumenta le sue tacche.
    Ho visto nella documentazione msdn se riuscivo a trovare qualcosa, ma nulla. Non ho idea di come vedere un flusso di byte in download...

    Ringrazio chiunque possa aiutarmi

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    118
    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!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.