今天發現剛寫的WinForm應用程序佔用內存不正常,經分析測試發現是因爲屢次建立WebBrowser控件致使,爲了便於說明問題,下邊是簡化後的代碼:jquery
Form1.cs:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}web
private void button1_Click(object sender, EventArgs e)
{
(new Form2()).Show();
}
}測試
Form2.cs:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}線程
private void Form2_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.jquerycn.cn/");
}
}orm
查閱MSDN有以下說明:blog
引用內容
WebBrowser 控件會佔用大量資源。 使用完該控件後必定要調用 Dispose() 方法,以便確保及時釋放全部資源。 必須在附加事件的同一線程上調用 Dispose() 方法,該線程應始終是消息或用戶界面 (UI) 線程。事件
然而實際測試Dispose方法並不能讓內存降下來,目前沒找到好的解決方法,後又測試發如今同一WebBrowser控件中打開不一樣頁面,內存基本保持在必定的範圍,所以:應避免屢次建立WebBrowser控件,儘可能在同一WebBrowser控件打開頁面。圖片