Pergunta

Aqui está o meu status app:

Objetivo - download de vários arquivos de lista de internet Abordagem - criado um simples "forma de download". Depois de um tempo, eu só precisava de mais formas porque eu tinha mais do que uma lista de arquivos para download. Apenas resolvido que, adicionando um MDIform ao meu projeto, adicionar um botão para criar outra instância "forma de download" e voilà. Aparentemente, o meu problema foi resolvido. Mas não: (

Quando eu pressionar o meu botão "download" na minha forma-instance3, as outras instâncias do formulário (2 e 1) trava sobre o download do conteúdo (eu recebo um tempo limite às vezes) até que o formulário-instance3 termina todos os downloads e assim por diante , para todas as outras formas. Assim, embora eu saiba que meu aplicativo não é multi-threaded, as várias instâncias da mesma forma estão em conflito (componente Inet, presumivelmente) e eu não posso fazer download de vários arquivos ao mesmo tempo. Inet e minha função de download são definidos no formulário.

O que posso fazer para resolver isso? Como posso baixar vários arquivos ao mesmo tempo?

Muitos agradecimentos

edit:

Eu estou tentando usar a sugestão "wqw", mas eu estou enfrentando alguns problemas: No download_form, eu tenho um MSHFlexgrid, com 2 colunas: uma com o URL e outro com o destino de arquivo. Eu estava a iteração jogar todas as linhas para baixar os arquivos e guardá-las. Com a abordagem sugerida pela "wqw", como posso distinguir cada download para que eu possa salvá-lo com o nome indicado corretamente na grade?

Foi útil?

Solução

O que você usa para o download http real? Gostaria de tentar simples Asynchronous downloads e esquecer o MDIForm. Realmente!

Outras dicas

VB6, por si só, é único segmento. Então, sair de baixar a diferentes formas não vai ajudá-lo.

O que eu usei no passado é a Temporizador objeto em conjunto com um ActiveX EXE . Essa abordagem lhe dará uma capacidade de localizar toda a lógica de download em um lugar, controlá-lo como você controlar um objeto regular e executá-lo em um EXE separado, assim, por padrão tornando-se multi-threaded.

Assim, a maneira como isso funciona é assim:

  1. Você chama o método de download no objeto ActiveX EXE
  2. No método de download, você instancia o temporizador e tê-lo começar quase que imediatamente.
  3. Você sair do Método de download, dando assim o controle de volta para a entidade que o chamou.
  4. Em seguida, você se comunica de volta para o aplicativo principal via Eventos (por exemplo DownloadProgress ou downloadComplete, etc ...)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top