Domanda

Ecco il mio stato di applicazione:

Oggetto - scaricare più file della lista da internet Approccio - ha creato un semplice "modulo da scaricare". Dopo un po ', ho solo bisogno di forme più perché ho avuto più di una lista di file da scaricare. Basta risolto che con l'aggiunta di un MDIForm al mio progetto, aggiungere un pulsante per creare un'altra istanza "modulo da scaricare" e voilà. A quanto pare, il mio problema è stato risolto. E invece no: (

Quando premo il mio pulsante "download" nella mia forma-instance3, le altre istanze di forma (2 e 1) si blocca sul download dei contenuti (ho un timeout a volte) fino a quando la forma-instance3 termina tutti i download e così via , per tutte le altre forme. Così, anche se so che la mia applicazione non è multi-threaded, le molteplici istanze dello stesso modulo sono in conflitto (componente Inet, presumibilmente) e non riesco a scaricare più file allo stesso tempo. Inet e la mia funzione di download sono definiti in forma.

Che cosa posso fare per risolvere questo problema? come posso scaricare più file allo stesso tempo?

Grazie

modifica:

Sto cercando di usare il suggerimento "wqw", ma io sto affrontando alcuni problemi: Nel download_form, ho un MSHFlexgrid, con 2 colonne: una con l'URL e l'altro con il file destino. Stavo iterazione tiro tutte le righe per scaricare i file e salvarli. Con l'approccio suggerito da "wqw", come posso distinguere ogni download in modo che io possa salvarlo con il corretto nome indicato nella griglia?

È stato utile?

Soluzione

Che cosa si usa per il download http reale? Vorrei provare semplici Download asincroni e dimenticare il MDIForm. Davvero!

Altri suggerimenti

VB6, di per sé, è a thread singolo. Così scoppiare il download di forme diverse non vi aiuterà.

Quello che ho usato in passato è il Timer oggetto in congiunzione con un EXE ActiveX . Questo approccio vi darà una capacità di localizzare tutta la logica di download in un unico luogo, controllarlo come se il controllo di un normale oggetto e lo hanno eseguito in un EXE separato, quindi per default rendendolo multi-threaded.

Quindi il modo in cui funziona è in questo modo:

  1. Si chiama il metodo di download per l'oggetto EXE ActiveX
  2. Nel metodo di download, è un'istanza del timer e farlo dare il via quasi subito.
  3. Si ottiene fuori del metodo di download, dando così il controllo al soggetto che l'ha chiamata.
  4. Poi si torna comunicare al app principale tramite eventi (ad esempio DownloadProgress o downloadComplete, ecc ...)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top