今天发现刚写的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控件打开页面。图片