Oppure

Loading
17/04/09 19:18
Luk3
Ciao a tutti.
Ho bisogno di scaricare un'immagine e dopodichè visualizzarla in una picturebox.
Ho scritto questo:

        private void button1_Click(object sender, EventArgs e)
        {
            string finale = "http://it.netlogstatic.com/p/oo/072/040/";
            string ext = ".jpg";
            string picid = "72040944";
            Uri url = new Uri(string.Format(finale, picid, ext));
            WebClient client = new WebClient();
            string file = string.Format(picid, ext);
            client.DownloadFileAsync(url, Application.StartupPath + file);
            pictureBox1.Load(Application.StartupPath + file);
       }


Ma dice che la picturebox non può caricare niente, perchè il file è in uso..
Se poi trovate altri errori ditemelo.
Grazie :k:
Ultima modifica effettuata da Luk3 17/04/09 19:19
aaa
17/04/09 19:47
theprogrammer
Il tuo codice ha degli errori nella formazione delle stringhe e non devi usare la versione Async del Download ...

string picid = "72040944"; 
Uri url = new Uri("http://it.netlogstatic.com/p/oo/072/040/" + picid.ToString() + ".jpg"); 
WebClient client = new WebClient(); 
string file = string.Format(picid + ".jpg"); 
client.DownloadFile(url, Application.StartupPath + file); 
pictureBox1.Load(Application.StartupPath + file); 
aaa
17/04/09 20:48
Luk3
Grazie :k:
Avevo usato l'Async perchè secondo l'intellisense quella versione non mi bloccava il thread..
aaa
17/04/09 20:50
theprogrammer
Postato originariamente da Luk3:

Grazie :k:
Avevo usato l'Async perchè secondo l'intellisense quella versione non mi bloccava il thread..


E proprio per questo non era adatto. In questo modo veniva eseguita l'altra riga prima che il file fosse effettivamente scaricato ...
aaa
17/04/09 20:57
Luk3
Ah Ok ;)
Grazie :k:
aaa
18/04/09 15:34
Il Totem
Puoi comunque usare l'async e caricare l'immagine una volta che il download è terminato. Per far questo avresti bisogno di rendere il webclient visibile a livello di classe e di dichiararlo withevents o di aggiungere un handler da codice al suo evento DownloadFileCompleted (mi sembra si chiami così;). Se l'immagine non è particolarmente grande, non è necessario, ma ricorda che il primo download di ogni webclient è sempre un po' più lento degli altri.
aaa