개발/C#

C# 웹브라우저 메모리 누수

FA1976 2018. 6. 8. 08:35

c# 기본 브라우저의 메모리 누수는 근본적으로 해결 방법이 없다고 합니다. 다른 브라우저 크롬등과 같은 라이브러리를 써서 해결 해야 한고 하더군요.. 스택오버플로우에서..


C# 기본 브라우저는 메모리 누수가 심해서 문제가 된다는데... 이렇게 하면 해결이 된다고 함.

써봐야지...


public partial class Form1 : Form

    {

        [DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize", SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        internal static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);


        [DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        internal static extern IntPtr GetCurrentProcess();


        private void ReNewBrowser()

        {

            webBrowser1.Dispose();

            webBrowser1 = null;


            IntPtr pHandle = GetCurrentProcess();

            SetProcessWorkingSetSize(pHandle, -1, -1);


            GC.Collect();

            GC.WaitForPendingFinalizers();

            GC.Collect();

            webBrowser1 = new WebBrowser();


            webBrowser1.Location = new Point(11, 42);

            webBrowser1.Size = new Size(1054, 659);

            webBrowser1.ScriptErrorsSuppressed = true;


            webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;

            webBrowser1.Navigating += webBrowser1_Navigating;


            splitContainer1.Panel1.Controls.Add(webBrowser1);


            webBrowser1.Show();

        }

    }