2010-01-13 6 views
2

WM6.1에서 응용 프로그램을 빌드 중이며 리소스 제어에 관한 몇 가지 질문이 있습니다. 내 응용 프로그램은/.NET CF 창 형태의 3.5여러 제어 인스턴스의 메모리 사용

하나, 나는 단 하나의 웹 브라우저 컨트롤을 배치하고, 프로그램을 실행이 VS2008에 의해 구축이다
다음 제어판을 열어 위해 응용 프로그램의 메모리 사용량을 볼 수 그것 25MB에서 29MB로 증가하며 특별한 것은 없습니다.

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); 
     } 
    } 

그런 다음, 메모리 사용량이 31메가바이트에 25메가바이트에서 성장입니다 : 그 후

, 나는 코드에 따라 일부 콘텐츠를 표현하고 프로그램을 다시 실행하기 위해 중계기를 시뮬레이션하기 위해 30 웹 브라우저 컨트롤을 배치해야합니다. 비용은 2MB입니다. 어쩌면이 2MB는 웹 브라우저에 의해 소비되지 않습니다. 왜냐하면 그 30 웹 브라우저의 HTML 컨텐츠 때문일 수 있습니다.

그래서 제 질문은 여전히 ​​하나의 인스턴스 만 자원 비용을하는 제어 UI의 여러 인스턴스를 생성,

1.On .NET의 세계인가?

2. form_unload에서 30 개의 웹 브라우저 컨트롤을 처리하는 가장 좋은 방법은 무엇입니까? GC.Collect();를 사용하여 을 사용 중입니다. 또는. NET CF 나를 위해 할 것인가?

대단히 감사합니다.

답변

1
  1. 응용 프로그램 자체도 메모리를 사용합니다. 따라서 첫 번째 웹 브라우저는 다른 웹 브라우저보다 비용이 많이 드는 것처럼 보입니다. 개인적으로 나는 그것이 전혀 환상적이지 않다고 생각합니다. 당신은

  2. .NETCF는 가비지 컬렉터가 있고 응용 프로그램을 종료 할 때 모든 개체를 처리합니다 적은 WebBrowsers :)를 사용하는 것을 고려 할 수 있습니다. Windows Mobile에서는 응용 프로그램을 최소화 할 수 있습니다. WebBrowser 컨트롤도 IDisposable을 상속하므로 Dispose 메서드가 포함되어 있습니다.

관련 문제