none
C# Webbrowser Ram Şişmesi RRS feed

  • Soru

  • Arkadaşlar kolay gelsin,

    2 adet formum var, bir tanesi sabit ikincisi açılıp işlemleri yapıp kendisini kapatıyor. Webbrowserimda ikinci formda görev yapmakta, işlemler bittiğinde 2. formu kapatırken "this.Close();" komutunu kullanıyorum fakat görev yöneticisinden programı izlediğimde her 2. formun açılıp kapanmasında ram kullanımı artmakta. 10 dakika içinde düşük sistemli pcleri yoracak ciddi ram kullanıyor.

    Ram temizliği ile ilgili yabancı kaynak var fakat anlamadım yardımcı olur musunuz ?


    • Düzenleyen Mertr35 19 Ekim 2015 Pazartesi 20:21
    19 Ekim 2015 Pazartesi 16:39

Yanıtlar

Tüm Yanıtlar

  • Cem bey ilginiz için teşekkürler fakat beni anlamadınız sanırım applıcatıon.exıt(); kodunu kullanırsam uygulama komple kapanıyor, benim projemde form1 sabit kalıyor onun üzerinden form2 açılıp işlem yapıp kapatıyor.

    Projemde form1 sabit, form2 açılıp webbrowser siteyi ziyaret edip kapanıyor.

    şöyle anlatayım örnek vererek;

    * form1 açık 80k ram kullanırken form2 açıldığında ram 120k oluyor kapandığında öyle kalıyor tekrar 80kya düşmüyor, bir daha form2 açılıp kapandığında 160k ram kullanıyor bu şekilde sürekli ram kullanımı artıyor.

    20 Ekim 2015 Salı 03:53
  • Form2 üzerinde Disposable nesneler kullanıyorsanız (DbContext vs.) bunları FormClosed olayında dispose edin ve GC.SuppressFinalize(this); metodunu çalıştırın..

    oguzkurtcuoglu.com


    20 Ekim 2015 Salı 06:36
  • Thread kullanıyor musunuz?
    20 Ekim 2015 Salı 06:48
  • Oğuz Bey ve Olcay Bey ilginiz için çok teşekkür ederim yeni fırsat bulabildim baktım dediklerinize fakat tam olarak anlamadım c# yeni öğreniyorum, sizlerden ricam form 1 ve 2'nin kodlarını buraya yazıyorum.

    Şunuda belirtmek isterim form1 ve form2'yi birleştirdim tek form çalıştırdım webbrowser site değiştirdikçe gene ram kullanımı şişti.

    FORM1: sabit

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace surfclicker
    {
        public partial class Main : Form
        {
    
    
    
            public static string links;
     
            public Main()
            {
                InitializeComponent();
    
                
            }     
    
    
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                timer1.Enabled = true;
            }
    
    
            NotifyIcon MyIcon = new NotifyIcon();
            private void Main_Load(object sender, EventArgs e)
            {
    
    
                webBrowser1.Navigate("www.google.com");
                listBox1.SetSelected(0 , true);
                
            }
    
    
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                links = ((string)listBox1.SelectedItem);
    
                
            }
                  
            private void timer1_Tick(object sender, EventArgs e)
            {
                           
                if (label1.Text == "180")
                   {
    
                       timer1.Enabled = false;
                     }
                    else
                    {
                        int x = (listBox1.SelectedIndex + 1); 
                        int a = int.Parse(label1.Text);
                        a = a + 1;
                        label1.Text = a.ToString();               
                    listBox1.SetSelected(x, true);
                    
                    var clicker = new clicker();
                    clicker.Show(this);  
    
    
    
               }
                }
            
    
            private void button2_Click(object sender, EventArgs e)
            {           
                
                var clicker = new clicker();
                    clicker.Show(this);       
    
                
            }
    
            private void Main_Resize(object sender, EventArgs e)
            {
                if (FormWindowState.Minimized == WindowState)
                {
                    Hide();
                    notifyIcon1.BalloonTipText = "SurfClicker arkaplan moduna geçti";
                    notifyIcon1.ShowBalloonTip(5); //Mesajı 5sn. goruntuler
                }
            }
    
            private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
               
            {
                Show();
                WindowState = FormWindowState.Normal;
            }
            }
    
            private void label1_Click(object sender, EventArgs e)
            {
                label1.Text = Convert.ToString(DateTime.Now.Day);
            }
    
            private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                
            }
           
    
    
            // Hides script errors without hiding other dialog boxes.
            private void SuppressScriptErrorsOnly(WebBrowser browser)
            {
                // Ensure that ScriptErrorsSuppressed is set to false.
                browser.ScriptErrorsSuppressed = false;
    
                // Handle DocumentCompleted to gain access to the Document object.
                browser.DocumentCompleted +=
                    new WebBrowserDocumentCompletedEventHandler(
                        browser_DocumentCompleted);
            }
    
            private void browser_DocumentCompleted(object sender,
                WebBrowserDocumentCompletedEventArgs e)
            {
                ((WebBrowser)sender).Document.Window.Error +=
                    new HtmlElementErrorEventHandler(Window_Error);
            }
    
            private void Window_Error(object sender,
                HtmlElementErrorEventArgs e)
            {
                // Ignore the error and suppress the error dialog box. 
                e.Handled = true;
            }
    
                    private void timer2_Tick(object sender, EventArgs e)
            {
                HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A");
    
                foreach (HtmlElement link in links)
                {
                    if ((link.InnerText != null) && (link.InnerText.Equals("Geç")))
                        link.InvokeMember("Click");
                    timer2.Enabled = false;
                }
            }
           
            }
    
    }
    
           
        
    

    FORM2: açılıp işlem yapıp kapanan

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace surfclicker
    {
        public partial class clicker : Form
        {
    
            
            public clicker()
            {
               
                
                InitializeComponent();           
                webBrowser1.Url = new Uri(Main.links);
    
            
            }
            
    
            private void clicker_Load(object sender, EventArgs e)
            {
    
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
    
                HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A");
    
                foreach (HtmlElement link in links)
                {
                    if ((link.InnerText != null) && (link.InnerText.Equals("Geç")))
                        link.InvokeMember("Click");
                    
                }
                
            }
    
            private void timer2_Tick(object sender, EventArgs e)
            {
    
                
                this.Close();
            }
    
          
    
           
    
        }
    
    }
      
    


    20 Ekim 2015 Salı 17:20
  • Gördüğüm kadarıyla timer içinde sürekli olarak clicker adlı formu açıyorsun. Timer a interval atamasını tasarım ekranında yaptın sanırım eğer değiştirmediysen varsayılan değer 100 ms bu da saniye de 10 defa  clicker adlı formun açılması demektir. Kullanılan RAM miktarının artmasına bu sebep oluyor olabilir. 


    20 Ekim 2015 Salı 17:52
  • 2 adet timer var, birtanesi 15 saniyede bir 2. formu açıyor

    diğeride 2.formda  9 saniyede bir click yapıyor

    20 Ekim 2015 Salı 19:24