ersten Mal Plakat, Leser lange Zeit, so nehmen Sie es einfach auf mich :)Mehrere WebClients, Im Laufe der Zeit weclints aufhören zu arbeiten
ich eine Anwendung Ich schreibe, die in einer Reihe von Ordnern liest und ermöglicht es Ihnen, ein zum Download Bild für jeden Ordner. Es gibt ein WebBrowser-Steuerelement, wo Sie zu einem bestimmten Bild navigieren können, und klicken Sie auf eine Schaltfläche "Dieses Bild für den ausgewählten Ordner verwenden".
Jeder "Ordner" wird als Objekt mit einer eigenen Download-Methode dargestellt, die den WebClient in einem BackgroundWorker-Thread verwendet.
Wenn ich die Bild-URL auf das Objekt festgelegt, startet sie die Background dieses Objekts und führt diesen Code
using (WebClient client = new WebClient())
{
client.Proxy = null;
Stream stream = client.OpenRead(BackdropUrl);
Bitmap bitmap = new Bitmap(stream);
stream.Flush();
stream.Close();
e.Result = bitmap;
}
ich auch ein Webclient in meine Anwendungen Hauptthread verwenden einige einfache html „Schaben“ zu tun .
Nun zu dem Problem. Wenn ich anfange, die App zu verwenden, ist alles gut, die Dateien werden heruntergeladen, während ich durch die Liste gehe, aber nach einer Weile scheint es, dass die Web-Clients nach dem Zufallsprinzip nicht mehr reagieren. Ich kann immer noch in der Web-Browser Kontrolle stöbern, aber alle webclient Ausführungscode scheint nicht vollständig hängt es nur an einen dieser beiden Linien:
Stream stream = client.OpenRead(BackdropUrl);
Bitmap bitmap = new Bitmap(stream);
Ich weiß, das ist immer noch ziemlich vage, aber ich versuchte zu erklären, so gut ich konnte. Hat jemand vielleicht eine robustere Möglichkeit, ein Bild direkt in ein Bitmap-Objekt herunterzuladen? d. h. nicht in Datei speichern und dann wieder öffnen?
Jede Hilfe wird sehr geschätzt.
Haben Sie das gleiche Problem, wenn Sie denselben WebClient verwenden, anstatt für jede Datei einen neuen zu erstellen? –
Nun, ich versuche, jedes Objekt "in sich geschlossen" zu halten (weiß nicht, ob das der richtige Ausdruck ist), also weiß ich jetzt nicht, ob es einen Weg gibt, dies zu tun und nur einen Webclient zu verwenden? Ich habe schnell einen Test bei der Arbeit gemacht und es schien ohne Probleme zu funktionieren, also weiß ich nicht, ob es vielleicht meine Internetverbindung zu Hause ist, die das verursachen könnte? Vielleicht sollte ich versuchen, die Elemente zu einer "Download-Warteschlange" hinzufügen und erlauben nur zwei gleichzeitig zu downloaden? – Craigt