none
Downloadproblem RRS feed

  • Frage

  • Hallo,

    wenn ich mein Programm etwas downloaden lassen, z.B. eine Datei über einen WebClient oder in einer PictureBox ein Bild von einer URL, dann braucht es erstmal eine ganze Weile bis es überhaupt anfängt. Davor friert das Programm ein. Mit einem BackgroundWorker habe ich die Wartezeiten auch nur eben ohne einfrieren. Ist das normal oder nicht. Und wenn nicht, was muss ich machen, damit es nicht so ewig braucht?

    nivel98

    Sonntag, 30. September 2012 05:54

Antworten

  • Hallo, dein Problem hat mich neugirig gemacht und habe es mal selbst getestet. Das folgende Bild:

    http://koopakiller.ko.ohost.de/images/bg.png

    Brauchte in der PictureBox und mit WebClient ca 30 Sekunden zum Anzeigen/Downloaden. Ich fand die bezüglich folgende Lösung im Internet:

    The problem is described by Peter Bromberg at:
     WebClient Class: Gotchas and Basics
    "If you do not have a proxy in use, you should set the Proxy property on all your WebClient and WebRequest objects to null. If you do not do this, you run the risk of having the Framework attempt to "autodetect" proxy settings, which can add up to an additional 30 seconds to your requests.

    Somit kam ich dann nur noch auf ca. 1 Sekunden Downloadzeit:

            Stopwatch sw;
    
            private void button1_Click(object sender, EventArgs e)
            {
                sw = new Stopwatch();
                WebClient wc = new WebClient();
                wc.Proxy = null;
                wc.DownloadFileCompleted += wc_DownloadFileCompleted;
                sw.Start();
                wc.DownloadFileAsync(new Uri("http://koopakiller.ko.ohost.de/images/bg.png"),
                    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "myfile.png"));
            }
    
            void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
            {
                sw.Stop();
                MessageBox.Show("Download Completed\n" + sw.ElapsedMilliseconds + "ms");
            }

    Wegen der PictureBox fand ich nur folgende Lösung:
    http://stackoverflow.com/questions/4419536/picturebox-load-method-loading-images-from-the-internet-slow-at-first-request


    Koopakiller - http://koopakiller.ko.ohost.de/

    • Als Antwort markiert nivel98 Sonntag, 30. September 2012 10:52
    Sonntag, 30. September 2012 10:37

Alle Antworten

  • Miß mal die Zeit mit einem Browser. Wenn da die gleichen Zeiten erreicht werden, dann kannst Du in Deinem Programmnichts machen. Wenn es größere Unterschiede gibt, dann zeig mal Deinen Code und die Zeiten, die die einzelnen Anweisungen benötigen.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 30. September 2012 09:48
  • Hallo, wo hast du denn die Bilder/Dateien geuploaded? Wenn der Server von sich aus etwas langsam ist, so kannst du da nichts machen. Teste es mal mit einem Browser, wie lange es da dauert die Dateien zu downloaden.

    Ansonsten zeige mal deinen Code, mit dem du die Dateien herunter lädtst.


    Koopakiller - http://koopakiller.ko.ohost.de/

    Sonntag, 30. September 2012 09:55
  • es ist so, dass wenn ich mein programm starte ein bild in eine picturebox aus dem internet lade. mit dem browser is das bild in 1 sek da. im programm dauert es manchmal 2 minuten. das gleiche bei dateien mit nem webclient. dauert mit meinem programm meistens viel länger.

    zum downloaden benutze ich einfach einen webclient und dann webclient.DownloadFileAsync(new Uri("die URL")) ! bei den pictureboxen einfach picturebox.ImageLocation = "die Url"

    das ist doch ok oder?


    • Bearbeitet nivel98 Sonntag, 30. September 2012 09:57
    Sonntag, 30. September 2012 09:56
  • Hallo, dein Problem hat mich neugirig gemacht und habe es mal selbst getestet. Das folgende Bild:

    http://koopakiller.ko.ohost.de/images/bg.png

    Brauchte in der PictureBox und mit WebClient ca 30 Sekunden zum Anzeigen/Downloaden. Ich fand die bezüglich folgende Lösung im Internet:

    The problem is described by Peter Bromberg at:
     WebClient Class: Gotchas and Basics
    "If you do not have a proxy in use, you should set the Proxy property on all your WebClient and WebRequest objects to null. If you do not do this, you run the risk of having the Framework attempt to "autodetect" proxy settings, which can add up to an additional 30 seconds to your requests.

    Somit kam ich dann nur noch auf ca. 1 Sekunden Downloadzeit:

            Stopwatch sw;
    
            private void button1_Click(object sender, EventArgs e)
            {
                sw = new Stopwatch();
                WebClient wc = new WebClient();
                wc.Proxy = null;
                wc.DownloadFileCompleted += wc_DownloadFileCompleted;
                sw.Start();
                wc.DownloadFileAsync(new Uri("http://koopakiller.ko.ohost.de/images/bg.png"),
                    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "myfile.png"));
            }
    
            void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
            {
                sw.Stop();
                MessageBox.Show("Download Completed\n" + sw.ElapsedMilliseconds + "ms");
            }

    Wegen der PictureBox fand ich nur folgende Lösung:
    http://stackoverflow.com/questions/4419536/picturebox-load-method-loading-images-from-the-internet-slow-at-first-request


    Koopakiller - http://koopakiller.ko.ohost.de/

    • Als Antwort markiert nivel98 Sonntag, 30. September 2012 10:52
    Sonntag, 30. September 2012 10:37
  • danke hat super funktioniert. dachte schon die über 2000 zeilen wären umsonst und ich müsste das programm aufgeben. leider laggt das programm die ersten paar sekunden nach dem laden der pictureboxen, aber das finde ich jetzt nicht so schlimm! hier der link zum programm, für alle die es interessiert: www.nivelGames.de/mcc

    nivel98


    • Bearbeitet nivel98 Sonntag, 30. September 2012 10:52
    Sonntag, 30. September 2012 10:51