Laden...

Bilder von Wikipedia runterladen

Erstellt von digi333 vor 13 Jahren Letzter Beitrag vor 13 Jahren 963 Views
d
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 13 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.815 Beiträge seit 2005
vor 13 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.449 Beiträge seit 2008
vor 13 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 13 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 13 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 13 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.