2010-01-13 84 views
2

我正在用WM6.1构建一个应用程序,很少有关于资源控制的问题。 我的应用程序是通过VS2008建立/ .NET CF 3.5多个控件实例的内存使用情况

窗口形式之一, 我仅放置一个web浏览器控件,并运行该程序,
然后打开控制面板和查看applicationm的内存使用它从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.On .NET世界中,它是生成的控制界面的多个实例仍然只花了一个实例资源?

2.在form_unload上配置这30个webbrowser控件的最好方法是什么?使用GC.Collect(); 或.net CF会为我做?

非常感谢。

回答

1
  1. 应用程序本身也使用内存。所以,第一个WebBrowser似乎比其他29个成本要高很多。所以我个人认为它没什么特别。您可能需要考虑使用较少的WebBrowsers :)

  2. .NETCF有一个垃圾收集器,当您退出应用程序时将处理所有对象。请记住,在Windows Mobile上,应用程序也可以最小化。 WebBrowser控件也继承了IDisposable,因此包含Dispose方法。