2010-01-13 53 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方法。