2013-03-19 3 views
5

Out her biri yaklaşık 1 MB olmak üzere yaklaşık 20 fotoğraf içeren "görüntüler" listesi. Bir sonraki tuşa tıklayarak listedeki resimlerde gezinmek istiyorum. Ama yaklaşık 8 resim sonra bellek çıkmakişlenmeyen bir özel durum System.Drawing.dll oluştu Ek bilgi: Ben benzer sorunlar googled var ama tam olarak bir bilgisi</p> <p>benim kanununda değişiklik nasıl çözemedim belleğin

ChooseColors2 iplik yüzden yarış koşulları önlemek için "CurrImage" kullanacaktır

private void button4_Click(object sender, EventArgs e) //next 
    { 
     index++; 
     if (index >= images.Count) index = 0; 
     CurrImage = images[index]; 
     Bitmap b = new Bitmap((Bitmap)CurrImage.Clone()); //breakpoint occurs her 
     pictureBox1.Image = b; 

     NewThread = new Thread(new ThreadStart(ChooseColors2)); 
    } 
, ben kaçınılması

yukarıda gösterildiği gibi, yeni bir bit eşlem oluşturarak unutmayınız ki eğer ben pictureBox1.Image = CurrImage kullanın; Yeni bir bit haritası oluşturmadan bu hatayı almıyorum ama iş parçacığı ile yarış durumu istisnası olacak. teşekkürler

cevap

4

Bir önceki "yeni" Bitmap ve kaynakları ücretsiz kaldırmak için, pictureBox1.Image yeni Bitmap atamadan önce aşağıdaki arama deneyebilirsiniz:

pictureBox1.Image.Dispose(); 
+3

Teşekkür Grant, ben belleği hakkında daha fazla okumak gerektiğini düşünüyorum sızdırıyor. Ne zaman bir programcı olduğumu düşünürsem, o zaman hala uzaklaştığımı anlarım. Yardımlarınız için zaten teşekkürler. – Basco

İlgili konular