Ich habe eine Anwendung geschrieben mit .NET 3.5 SP1, die Bilder von einer externen Site herunterlädt und sie für die Endbenutzer anzeigt. In seltenen Fällen erleben meine Benutzer OutOfMemory-Fehler, weil sie riesige Bilder herunterladen. Manchmal sind die Rohdaten, die mit diesen Bildern verbunden sind, groß, aber häufiger sind die Abmessungen der Bilder groß. Ich realisiere, dass ich vielleicht nie die Tatsache umgehen kann, dass diese OOM-Fehler für bestimmte Bilder ausgelöst werden. Es wäre jedoch SEHR hilfreich, wenn ich irgendwie feststellen könnte, ob das Laden eines bestimmten Bildes zu einem OOM-Problem führen würde, bevor ich versuche, das Bild zu laden.Wie erkennt man, ob das Laden eines Bildes eine OutOfMemory-Ausnahme in .NET auslöst?
Die Daten für die Bilder werden in einen Stream geladen, und dann wird das Bild selbst in ein System.Drawing.Image umgewandelt, indem ein Aufruf von System.Drawing.Image.FromStream (stream) ausgeführt wird. Ich habe nicht die Möglichkeit, diese Bilder zuerst auf der Festplatte zu speichern. Sie müssen über den Speicher geladen werden.
Wenn jemand irgendwelche Tipps oder Vorschläge hat, die mir erlauben würden zu erkennen, dass das Laden eines Bildes zu einer OOM-Ausnahme führen würde, würde ich es sehr schätzen.
"Die Daten für die Bilder werden in einen Stream geladen" ... durch Magie oder wie? – Will
@Will - "lädt Bilder von einer externen Website herunter" –
@Joel, damit er einen Stream erhält, diesen Stream in einen Speicherstream einspeist und diesen Stream dann mit einem Image verwendet? Und er fragt sich, warum ihm die Erinnerung ausgeht? Warum nicht einfach den Original-Stream benutzen und den mittleren Mann ausschneiden? Bin ich der Verrückte? – Will