Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LordALMMa

C# - Downloads múltiplos em várias threads + ProgressBar

Recommended Posts

Pessoal,

 

desculpa pela pergunta mas sou bem novo em C#.net. :unsure:

Já li um pouco de threads no C#.net mas ainda sim não consegui fazer funcionar... <_<

 

Acontece assim:

 

Eu possuo uma lista (List<string>) de URLs para baixar.

E quero baixar TODAS simultaneamente.

 

Durante o download, eu quero preencher um campo ProgressBar com o valor do percentual total dos downloads.

 

Para fazer os downloads eu possuo uma classe Downloader, que gerencia cada Download.

CODE

class Downloader

{

private string url;

private System.Windows.Forms.ProgressBar progresso;

public void setUrl(string url)

{

this.url = url;

}

public void setProgresso(System.Windows.Forms.ProgressBar progresso)

{

this.progresso = progresso;

}

 

public void baixar()

{

char[] partir = { ' ' };

int BUFFER = 1024;

System.Net.WebClient Client = new System.Net.WebClient();

Stream strm = Client.OpenRead(url);

StreamReader sr = new StreamReader(strm);

int index = 0;

int leitura;

char[] dados = new char[bUFFER];

do

{

leitura = sr.Read(dados, index, BUFFER);

//progresso.Value = progresso.Value + 1;

}

while (leitura != 0);

strm.Close();

}

}

A classe principal possui um método assim:

CODE

private void baixarArquivos(List<string> arquivosFaltantes)

{

char[] partir = { ' ' };

Downloader d = new Downloader();

d.setProgresso(this.progresso);

ThreadStart ts = new ThreadStart(d.baixar);

for (int i = 0; i < arquivosFaltantes.Count; i++)

{

// Na posicao 0 -> numero do download (para verificar se ha atualizacao)

// Na posicao 1 -> tipo de download (para controle interno)

// Na posicao 2 -> nome do arquivo para download (apenas o nome do arquivo)

d.setUrl("http://www.url_teste.com.br/" + (arquivosFaltantes.Split(partir))[2]);

 

Thread t = new Thread(ts);

t.IsBackground = true;

t.Start();

}

 

}

 

 

 

 

Mas estou com dois problemas:

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif - Como saber o tamanho do arquivo a ser baixado, no servidor, para calcular os percentuais?

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif - Como ir preenchendo o ProgressBar na thread principal, a partir das outras Threads?

 

 

Agradeço desde já, qualquer ajuda.

>.<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Windows Applications

 

De uma olhada nesses exemplos:

http://www.albahari.com/threading/part3.html

http://www.dreamincode.net/forums/blog/mar...p?showentry=680

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.