BEGINGETRESPONSE DE FORMA CLARA E OBJETIVA

BISEWSKI 07/05/2010 17:12:53
#341228
Boa tarde a todos.

Eu quase concluindo um projeto e parece que bati de frente com um problemão.
Como manter meu programa baixando e enviando dados para um ftp de forma que ele permita que eu continue usando o aplicativo normalmente?

Bom, depois de muito pesquisar, vi que uma boa alternativa simples e rápida era usar o FtpWebRequest e o FtpWebResponse. Dá para enviar e receber arquivos, lista0los e excluir de forma muito fácil de ser programada.

O problema é que esse sistema ele não é asincrono, ou seja, se você manda enviar ou receber um arquivo o programa trava.
Esse é o meu problema, ele não pode travar, se tudo der certo o envio e recebimento dos arquivos irão ocorrer com a solicitação de um Timer, então eu nem vou ver o que está acontecendo.

Bom, descobri uma forma de resolver, usando o BeginGetResponse. Ele funciona de forma asincrona. E é aí que está o problema, não consigo entender esse sistema.

Nesse site: http://stuff.seans.com/2009/01/05/using-httpwebrequest-for-asynchronous-downloads
tem um sistema muito legal, mas é bem complexo, tem duas classes, tem um monte de códigos que se repetem e não consigo encaixar o quebra-cabeça.

Alguém sabe como posso usar esse sistema de forma simples e rápida por gentileza? Sem progressbar ou coisa parecida. Gostaria apenas de um sistema enxuto para poder entender e a partir de então, passar a inserir o restante do código, como upload, downlod e delete...
FABIOPAGANINI 07/05/2010 23:50:58
#341272
Resposta escolhida
a mais rapida de todas é utilizando o componente BackGroundWork,
com ele vc controla uma outra thread e pode fazer com que o programa continue fluindo enquanto outra thread baixe os arquivos.

caso nescessite de mais explicaçoes me avise.

outra formaa é vc criar suas proprias theads sem a nescessidade do backgroundwork.
BISEWSKI 08/05/2010 08:29:20
#341284
Opa, obrigado fera.

Eu já consegui fazer usando esse método, do BackGroundWork. Mas ele fica travando o programa em pequenos flashes...
Eu conseguo continuar usando o programa mas sempre com atraso. Sabe quando você passa o mouse sobre um botão e ele demora para ser selecionado?

Me basiei em um código retirado da net...Mas o programa dele tb trava...Me pareceu ser uma característica.
FABIOPAGANINI 10/05/2010 12:28:27
#341401
Sabes me dizer se o teu pc é Dual-Core?
pois os sintomas são de um sistema com backgroundwork rodando em um single-core.

isto acontece porque o windows estabelece um tempo limite para cada bloco de um processo executado pelas threads,
entao se um destes blocos consome mais que os outros, estas leves travadas são comuns, principalmente quando sendo executados em uma unica CPU.

podes tentar amenizar o impacto com que esta thread tenha com o sistema.
por exemplo. limtando a quantidade de arquivos sendo emitids, ou a quantidade de bites transmitidos por segundo.
Tópico encerrado , respostas não são mais permitidas