Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35

    [VB.NET] Download in sequenza

    Salve a tutti ho bisogno di un consiglio e una piccola manina

    mi sto fancendo un download manager con vb 2008, per adesso è molto basilare c'è una textbox dove mettere l'indirizzo e un savefiledialog e il pulsante per far partire il download.
    Purtroppo scarica solo 1 file alla volta, volevo riuscire a creare una specie di "coda" di download e ogni indirizzo che aggiungo rimane fermo e appena finisce un download procede con il secondo poi terzo eccetera.
    Il problema è che non sò da dove cominciare e ho appena iniziato a usare vb 2008 xD
    avevo pensato di mettere una text box multilinea e su ogni linea un link ma non ho la piu' pallida idea di come farlo funzionare, qualcuno riesce a darmi una mano?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Usa un controllo in cui puoi inserire i link (come una ListBox ...) e un ciclo che preleva i dati dal controllo e li scarica ...

    Se hai iniziato a programmare veramente da poco e non ti è chiaro quello che ti ho detto, allora ti consiglio di esercitarti con compiti più semplici ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    provo così..per ciclo intendi un loop?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da NuovoNomeUtente
    per ciclo intendi un loop?
    Beh ... sì ... non si può intendere altro ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    guarda io ho questo:
    codice:
        Private Sub down_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles down.Click
            download = New WebClient
            Dim save As String
            Dim ab As String
            save = urltxt.Text.Split("/"c)(urltxt.Text.Split("/"c).Length - 1)
            If urltxt.Text = "http://" Then
                MsgBox("Riempi l'url!!", MsgBoxStyle.Critical)
            Else
                For numX = 1 To ListBox1.Items.Count()
                    ab = ListBox1.SelectedItem
                    download.DownloadFileAsync(New Uri(ab), brwtxt.Text + save)
                Next
            End If
        End Sub
    ma non funziona, cioè se metto solo i link nella listbox va, se ne metto piu' di uno no.
    mi dice:
    WebClient non supporta operazioni di I/O simultanee.

    come posso risolvere?dove sbaglio?
    è tutto il pomeriggio che ci sbatto la testa
    che io non sto cercando di scaricare piu file contemporaneamente, vorrei che li facesse tutti in lista uno dopo l'altro

  6. #6
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Non funziona perchè il ciclo va avanti e continua ad aggiungere i download.
    Devi fare in modo di fermare il ciclo fino a quando il download attuale non è completato e poi farlo ripartire per iniziare il prossimo.
    Altrimenti fai girare il ciclo generando un' oggetto per ogni link che poi dovrai gestire all' esterno del ciclo.
    Prova a dare un' occhiata qui per gli eventi:
    http://msdn.microsoft.com/it-it/libr...(v=VS.90).aspx
    ciao

  7. #7
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    Originariamente inviato da Vinsent
    Non funziona perchè il ciclo va avanti e continua ad aggiungere i download.
    Devi fare in modo di fermare il ciclo fino a quando il download attuale non è completato e poi farlo ripartire per iniziare il prossimo.
    Altrimenti fai girare il ciclo generando un' oggetto per ogni link che poi dovrai gestire all' esterno del ciclo.
    Prova a dare un' occhiata qui per gli eventi:
    http://msdn.microsoft.com/it-it/libr...(v=VS.90).aspx
    ciao
    quindi in poche parole dovrei piazzare il ciclo in DownloadFileCompleted giusto?
    adesso provo


    EDIT: niente non mi viene proprio
    qualcuno può farmi vedere come si fà spiegandolo?

    adesso mi ritrovo con questo casino:
    codice:
        Private Sub down_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles down.Click
            download = New WebClient
            Dim save As String
            save = urltxt.Text.Split("/"c)(urltxt.Text.Split("/"c).Length - 1)
            If urltxt.Text = "http://" Then
                MsgBox("Riempi l'url!!", MsgBoxStyle.Critical)
            Else
                download.DownloadFileAsync(New Uri(urltxt.Text), brwtxt.Text + save)
            End If
        End Sub
    
        Private Sub download_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles download.DownloadFileCompleted
            Dim save As String
            Dim ab As String
            save = ListBox1.Text.Split("/"c)(ListBox1.Text.Split("/"c).Length - 1)
            For numX = 1 To ListBox1.Items.Count()
                ab = ListBox1.SelectedItem(numX)
                download.DownloadFileAsync(New Uri(ab), brwtxt.Text + save)
            Next
            MsgBox("PIPPOOOOOOO")
        End Sub

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da NuovoNomeUtente
    guarda io ho questo:
    Perché usi il DownloadFileAsync e non il normale DownloadFile ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    perchè sò usare questo xD
    e riesco a visualizzare anche la dimensione dei file e la percentuale di download..
    l'altro è piu' comodo?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da NuovoNomeUtente
    perchè sò usare questo xD
    Ottima risposta ma poi non ti lamentare se qualcosa non va ...

    e riesco a visualizzare anche la dimensione dei file e la percentuale di download..
    Beh, questi sono motivi più validi ... ma mentre l'altra "attende" il completamento del download prima di passare alla prossima linea di codice, questa non lo fa (non per niente è Async).

    Quindi, succede che il metodo Async parte e il programma continua senza attendere che il primo download venga completato.

    A questo punto è necessario "sincronizzare" il codice con la fine del download.
    Lo puoi fare con un "AutoReset EventWaitHandle" ... la documentazione è in

    http://msdn.microsoft.com/en-us/libr...aithandle.aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.