использование памяти несколькими экземплярами управления - PullRequest
2 голосов
/ 13 января 2010

Я создаю приложение на WM6.1, несколько вопросов о контроле ресурсов. Мое приложение создано vs2008 / .NET CF 3.5

одна из оконных форм, Я размещаю только один веб-браузер и запускаю программу,
затем откройте панель управления и просмотрите использование памяти приложением: оно увеличится с 25 до 29 МБ, ничего особенного.

После этого Мне нужно разместить 30 элементов управления веб-браузера, чтобы имитировать ретранслятор для представления некоторого контента с помощью следующего кода и перезапустить программу:

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

Затем использование памяти увеличится с 25 МБ до 31 МБ. Это только стоит больше 2 МБ. Может быть, эти 2 МБ не потребляются веб-браузером, потому что HTML-контент этих 30 веб-браузеров.

Итак, мой вопрос,

1. В мире .NET генерируется ли несколько экземпляров пользовательского интерфейса управления по-прежнему всего за один экземпляр?

2. Каков наилучший способ размещения этих 30 веб-браузеров в form_unload? используя GC.Collect () ;? или .net CF для меня сделают?

Большое спасибо.

1 Ответ

1 голос
/ 09 февраля 2010
  1. Само приложение также использует память. Таким образом, первые веб-браузеры, кажется, стоят дороже, чем остальные 29. Поэтому лично я думаю, что в этом нет ничего особенного. Возможно, вы захотите использовать меньше веб-браузеров:)

  2. .NETCF имеет сборщик мусора и будет удалять все объекты при выходе из приложения. Помните, что в Windows Mobile приложения также можно свернуть. Элемент управления WebBrowser также наследует IDisposable и поэтому содержит метод Dispose .

...