ich bin noch neu in der Programmierung mit C# und suche jetzt nach anderen möglichkeit für einen Web-html download
Im moment mach ichs mit
WebClient webClient = new WebClient();
string html = webClient.DownloadString(url);
aber das ist viel zu langsam. (so ungefähr 20 sek und meistens passiert gar nichts)
Gibt es eine möglichkeit das schneller zu downloaden??
vielen dank
christopher2505
allo christopher25,
ich habe noch nichts mit der WebClient-Klasse gemacht, aber wie schnell eine Seite abrufbar ist erstmal vom Server abhängig der die Seite anbietet.
Zum anderen, wenn er 20 Sekunden gar nix macht liegt das wohl eher nicht am Server, denn der wird wohl kaum 20 Sekunden warten. Da muss wohl woanders der Fehler liegen.
huhu,
Fiddler benutzen und nachsehen was über die Leitung kommt.
😃
Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
Hallo Christopher,
ich denke er braucht die 20 Sekunden um die Datei zu laden.
Er macht also schon was, Du siehst es nur nicht.
Mache eine Scrollbar auf Dein Form und benutze
webClient.DownloadStringAsync(url);
Dann erhält der Anwender eine schöne Anzeige während des Downloads.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Bei BerndFfms Lösung wäre noch zu beachten: [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke)
@BerndFfm: Eine Scrollbar? 😉
Grüße, JasonDelife.
Beim Programmieren löst man die Probleme, die man nicht hätte, programmierte man nicht.
Hallo,
sorry, ich meinte eine Progressbar.
Da der Download schon asynchron arbeitet braucht man weder Thread noch Invoke :
...
WebClient client = new WebClient();
try
{
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChanged);
client.DownloadFileAsync(new Uri("http..."), "file.zip");
}
catch (Exception ex)
{
sys.Message("Update kann nicht geladen oder nicht gestartet werden !\r\n\r\n" + ex.Message);
}
...
private void DownloadProgressChanged(Object sender, DownloadProgressChangedEventArgs e)
{
pbFortschrittsanzeige.Value = e.ProgressPercentage, 100);
}
private void DownloadFileCompleted(Object sender, AsyncCompletedEventArgs e)
{
if (e.Error != null) sys.Message("Fehler beim Download des neuen Updates : " + e.Error.Message);
else
{
...
}
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Entschuldigung, mein Fehler. Wusste nicht, dass der WebClient die Events im GUI-Thread feuert. In dem Fall ist Invoke() natürlich unnötig.
Grüße, JasonDelife.
Beim Programmieren löst man die Probleme, die man nicht hätte, programmierte man nicht.