Я использую веб-браузер C# и Gecko для разработки приложения. Я обнаружил, что даже в форме есть только один GeckoWebBrowser и снова и снова перемещаться по некоторым видеостраницам, приложение будет создавать все больше и больше потоков, и приложение будет сбой после того, как я перейду на эти страницы несколько раз. Вот мои C# коды:Веб-браузер Gecko в C# не освобождает память после перехода на новый URL-адрес
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "http://news.qq.com";
string xulrunnerPath = "e:\\vm_tmp\\firefox\\xulrunner\\";
Gecko.Xpcom.Initialize(xulrunnerPath);
}
private void button1_Click(object sender, EventArgs e)
{
if (null == browser)
{
browser = new GeckoWebBrowser();
Controls.Add(browser);
browser.Parent = this;
this.Tag = browser;
browser.Location = new System.Drawing.Point(1, 100);
browser.Name = "webControl1";
browser.Size = new System.Drawing.Size(1280, 960);
browser.TabIndex = 0;
browser.Visible = true;
browser.BringToFront();
}
browser.Navigate(textBox1.Text);
}
А вот мои HTML коды:
<body style="padding: 0px; margin: 0px 0px;">
<center>
<video id="video" width="100%" autoplay="autoplay" controls="controls" loop="loop">
<source src='movie/1.mp4' type='video/mp4' ></source>
</video>
</center>
</body>
</html>
Нужно ли мне делать какие-либо ресурс очистки (в XULRunner или в GeckoWebBrowser), прежде чем я перейти? Я также тестирую эти страницы в Firefox. Когда я начинаю переключать эти страницы, Firefox также создает все больше и больше потоков и потребляет все больше и больше памяти. Но через несколько раз Firefox выпустит некоторые потоки и память. Таким образом, использование памяти увеличилось очень медленно. Но я не могу найти эту ситуацию в своем приложении C#.
Как Вы заявляете 'browser' переменных? –