Laden...

Bilder von Wikipedia runterladen

Erstellt von digi333 vor 14 Jahren Letzter Beitrag vor 14 Jahren 988 Views
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 14 Jahren
Bilder von Wikipedia runterladen

Ich wollte einige Bilder von Wikipedia runterladen, jedoch sind diese immer 0 Byte groß. Woran liegt das?


string picURL = "http://upload.wikimedia.org/wikipedia/commons/3/3e/1e7m_comparison_Uranus_Neptune_Sirius_B_Earth_Venus.png";
Uri uri = new Uri(picURL);
WebClient objClient = new WebClient();
objClient.DownloadFileAsync(uri, path + "\\" + filename);

1.820 Beiträge seit 2005
vor 14 Jahren

Hallo!

Bei Verwendung de rasynchronen Aufrufe musst du auch einen entsprechenden Eventhandler registrieren, also z.B. objClient.DownloadFileCompleted += ....
Dort bekommst du dann die Daten geliefert (oder eine Fehlermeldung).

Nobody is perfect. I'm sad, i'm not nobody 🙁

16.827 Beiträge seit 2008
vor 14 Jahren

Wäre auch eine Möglichkeit:

System.Net.WebClient Client = new WebClient( );
Stream a_webStream = Client.OpenRead( @"http://upload.wikimedia.org/wikipedia/commons/3/3e/1e7m_comparison_Uranus_Neptune_Sirius_B_Earth_Venus.png" );
StreamReader a_streamReader = new StreamReader(a_webStream);
string a_line = string.Empty;
do
{
	a_line = a_streamReader.ReadLine( );
	// hier irgendwas mit a_line anfangen, von mir aus zwischenspeichern
}
while (a_line !=null);
a_webStream.Close();


T
433 Beiträge seit 2006
vor 14 Jahren

Ja du musst schauen das dein Programm lang genug läuft damit der asynchrone Aufruf auch abgearbeitet werden kann.

Gruß,
Tom

D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 14 Jahren

Danke für die Hilfe... Man soll ja nicht nur Fragen stellen sondern auch Lösungen posten... deswegen hab ich meine mal mitdazu gepackt.


//globale Variable
private static bool bProcentComplete = false;

//Hauptprogramm
{
picURL = "http://upload.wikimedia.org/wikipedia/commons/3/3e/1e7m_comparison_Uranus_Neptune_Sirius_B_Earth_Venus.png";
Uri uri = new Uri(picURL);
WebClient objClient = new WebClient();
objClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Fct);
objClient.DownloadFileAsync(uri, path + "\\" + filename);
while (!bProcentComplete)
{
Thread.Sleep(200);
}
}

private static void Fct(object sender, AsyncCompletedEventArgs e)
{
bProcentComplete = true;
}


R
234 Beiträge seit 2007
vor 14 Jahren

Wie schon gesagt wurde, verwende lieber DownloadFile statt DownloadFileAsync. Dann kannst du dir nämlich dein Fct sparen, weil DownloadFile solange blockiert, bis der Download abgeschlossen ist.