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);
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 🙁
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();
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ja du musst schauen das dein Programm lang genug läuft damit der asynchrone Aufruf auch abgearbeitet werden kann.
Gruß,
Tom
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;
}
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.