我正在使用WM6.1构建一个应用程序,很少有关于资源控制的问题。 我的应用程序是由vs2008 / .NET CF 3.5构建的
其中一个窗口形式,
我只放置一个webbrowser控件,然后运行程序,
然后打开控制面板,查看应用程序的内存使用情况,它从25MB增长到29MB,没什么特别的。
之后, 我需要放置30个webbrowser控件来模拟转发器,通过以下代码表示一些内容并重新运行程序:
private void FormTest_Load(object sender, EventArgs e)
{
string html ="some words";
WebBrowser wb;
for (int i = 0; i < 30; i++)
{
wb = new WebBrowser();
wb.Width = 240;
wb.Height = 100;
wb.Top = i * 100;
wb.Left = 0;
wb.DocumentText = html;
this.Controls.Add(wb);
}
}
然后,内存使用量从25MB增长到31MB。 它只需2MB。也许这些2MB不被webbrowser消耗,因为那些30 webbrowser的html内容。
所以我的问题是,
1.在.NET世界中,它生成的多个控件UI实例仍然只花费一个实例资源吗?
2.在form_unload上处理这30个webbrowser控件的最佳方法是什么? 使用GC.Collect();?或.net CF会为我做的吗?
非常感谢你。
答案 0 :(得分:1)
应用程序本身也使用内存。因此,第一个WebBrowsers似乎与其他29个相比花费了很多。所以我个人觉得它没什么特别的。您可能需要考虑使用较少的WebBrowsers:)
.NETCF有一个垃圾收集器,在您退出应用程序时将处置所有对象。请记住,在Windows Mobile上,应用程序也可以最小化。 WebBrowser控件还继承了IDisposable,因此包含Dispose方法。