Laden...

Schneller Downloaden

Erstellt von christopher2505 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.588 Views
C
christopher2505 Themenstarter:in
1 Beiträge seit 2009
vor 14 Jahren
Schneller Downloaden

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

T
307 Beiträge seit 2008
vor 14 Jahren

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.

X
1.177 Beiträge seit 2006
vor 14 Jahren

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.

3.825 Beiträge seit 2006
vor 14 Jahren

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

J
237 Beiträge seit 2008
vor 14 Jahren

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.

3.825 Beiträge seit 2006
vor 14 Jahren

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

J
237 Beiträge seit 2008
vor 14 Jahren

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.