C# Ram Şişiyor

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    infazteam
    infazteam's avatar
    Kayıt Tarihi: 09/Kasım/2015
    Erkek

    Merhaba hocalar. ekranın beli bir noktasını her saniye timer ile görüntüsünü kaydediyorum fakat bu kaydedilen görüntü ram'da toplanıyor ve rem şişiyor program hata veriyor.

    bu kodların hata vermemsi için nasıl bir yol izlemeliyim ? 

     

     public  void timer1_Tick(object sender, EventArgs e)
            {
    
     var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
    
                var gfxScreenshot = Graphics.FromImage(bmpScreenshot);
    
                gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
    
                Rectangle crop = new Rectangle(1388, 125, 40, 28);
                var bmp = new Bitmap(crop.Width, crop.Height);
    
                using (var gr = Graphics.FromImage(bmp))
                {
                    gr.DrawImage(bmpScreenshot, new Rectangle(0, 0, bmp.Width, bmp.Height), crop, GraphicsUnit.Pixel);
                }
                pictureBox1.Image = bmp;
    
    }

     

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    asagidaki kismi sil.

      var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

     gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

     

    Bunlar bir yerde kullanilmiyor. gfxScreenshot objen dispose edilmedigi icin büyük ihtimalle tasma hatasi veriyor. Ama dedigim gibi kullanilmadigi icin silebilirsin.


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    Bitmap, gfxScreenshot  gibi objelerin dispose larini cağirman gerekebilir. Timer ne kadar sıklık ile calisiyor ? GC'y, cağirmayi denediğinde memory kullanımın normale dönüyormu? Debuger ile bakmak gerekebilir.


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    infazteam
    infazteam's avatar
    Kayıt Tarihi: 09/Kasım/2015
    Erkek
    unbalanced bunu yazdı

    asagidaki kismi sil.

      var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

     gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

     

    Bunlar bir yerde kullanilmiyor. gfxScreenshot objen dispose edilmedigi icin büyük ihtimalle tasma hatasi veriyor. Ama dedigim gibi kullanilmadigi icin silebilirsin.

    Hocam sildim  fakat ram sişmeye devam etti ve ekrana program resim çekmedi.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    infazteam
    infazteam's avatar
    Kayıt Tarihi: 09/Kasım/2015
    Erkek
    rakkoc bunu yazdı

    Bitmap, gfxScreenshot  gibi objelerin dispose larini cağirman gerekebilir. Timer ne kadar sıklık ile calisiyor ? GC'y, cağirmayi denediğinde memory kullanımın normale dönüyormu? Debuger ile bakmak gerekebilir.

    Dün denedim hocam progrm açılır açılmaz kapantıyordu kendisini.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    tamam hocam simdi gördüm bmpscreenshot a atiyormus kopyaladigini.. ben deneyeyim bakalim.


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
            private void timer1_Tick(object sender, EventArgs e)
            {
                var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
    
                using (var gfxScreenshot = Graphics.FromImage(bmpScreenshot))
                {
    
                gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
    
                Rectangle crop = new Rectangle(1388, 125, 40, 28);
                var bmp = new Bitmap(crop.Width, crop.Height);
    
                using (var gr = Graphics.FromImage(bmp))
                {
                   gr.DrawImage(bmpScreenshot, new Rectangle(0, 0, bmp.Width, bmp.Height), crop, GraphicsUnit.Pixel);
                }
                pictureBox1.Image = bmp;
    
                  
                }
                bmpScreenshot.Dispose();
    
            }

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    infazteam
    infazteam's avatar
    Kayıt Tarihi: 09/Kasım/2015
    Erkek
    unbalanced bunu yazdı
            private void timer1_Tick(object sender, EventArgs e)
            {
                var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
    
                using (var gfxScreenshot = Graphics.FromImage(bmpScreenshot))
                {
    
                gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
    
                Rectangle crop = new Rectangle(1388, 125, 40, 28);
                var bmp = new Bitmap(crop.Width, crop.Height);
    
                using (var gr = Graphics.FromImage(bmp))
                {
                   gr.DrawImage(bmpScreenshot, new Rectangle(0, 0, bmp.Width, bmp.Height), crop, GraphicsUnit.Pixel);
                }
                pictureBox1.Image = bmp;
    
                  
                }
                bmpScreenshot.Dispose();
    
            }

     

    oldu hocam ram 36 sabit teşekür ederim . eline sağlık 

Toplam Hit: 2237 Toplam Mesaj: 8
c# ram timer