Frage

Ich mache eine Anwendung, die viele Bilder verwendet. Die Anwendung erhält die Bilder von einem Server, und lädt sie ein zu einer Zeit. Nach vielen Bildern die Schaffung einer Bitmap gibt eine Ausnahme, aber ich weiß nicht, wie diese zu lösen. Hier ist meine Funktion der Bilder zum Download:

 public static Bitmap getImageFromWholeURL(String sURL)
    {

        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(sURL);
        myRequest.Method = "GET";


        // If it does not exist anything on the url, then return null
        try
        {
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
            myResponse.Close();
            return bmp;
        }
        catch (Exception e)
        {
            return null;
        }

      }

Kann mir jemand helfen hier draußen? Vielen Dank im Voraus!

War es hilfreich?

Lösung

„Viele Bilder“ sind natürlich eng mit der Erinnerung zur Neige. Bitmaps kann groß werden, werden sie eine Menge von nicht verwalteten virtuellen Speicher auffressen. Sie werden Ihr Programm intelligenter machen und speichern weniger Bitmaps im Speicher. Oder speichern Sie sie vorübergehend in eine Datei. Oder Wieder herunterladen sie, wenn nötig. Und richtig, ihre Ressourcen mit der Methode Dispose () reinigen, besonders wichtig für die Bitmap-Klasse.

Andere Tipps

Strom, der Reaktion auf die Festplatte anstatt halten sie im Speicher. hält um dann die Information über das Bild, das Sie in einem temporären Ort gespeichert haben, statt des Bildes selbst.

Wenn Sie diese alle in einem Picturebox sind zeigt (und basierend auf Ihre Kommentare Ich glaube, Sie sind), dann sollten Sie die alten Bilder Entsorgen ( dieser Blog-Eintrag es hilft erklären):

if(myPictureBox.Image != null)
{
    myPictureBox.Image.Dispose();
}
myPictureBox.Image = getImageFromWholeURL(url);

Als Randbemerkung auf Stil, Methodennamen sollen Pascal sein, nicht camelcase, und ich würde die ungarische Vorstellung auf dem Parameter verlieren.

Was tun Sie mit den System.Drawing.Bitmap Objekte? Haben Sie alle von ihnen in Erinnerung behalten? Dann ist es unvermeidlich, dass Sie nicht genügend Arbeitsspeicher Ausnahme irgendwann bekommen.

Basierend auf Ihren Bedürfnissen sollten Sie die Bilder an einem gewissen Punkt verwerfen. Wenn Sie sie benötigen, speichern Sie sie in einer Datei in Flash. Versuchen Sie auch, Dateien von kleineren Größen verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top