有人可以向我解释为什么当您转到webbrowser中的下一页时,此代码会产生如此多的内存使用量(例如,在3分钟内存超过300 MB后单击后退和前进)
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
foreach (HtmlElement input in webBrowser1.Document.GetElementsByTagName("input"))
{
if (input.GetAttribute("type").ToLower() == "text")
{
input.GotFocus += null;
input.LostFocus += null;
}
}
在这种情况下如何释放内存?相反,我想添加此内容。
void GotFocusForm(object sender, EventArgs e)
{
Form2.Instance.Show();
}
void LostFocusForm(object sender, EventArgs e)
{
Form2.Instance.Hide();
}
一周我正在寻找解决方案。非常感谢您的帮助。
经过几次反复前进。 Memory答案 0 :(得分:0)
每当您订阅该事件时,在完成工作后您需要取消订阅这些事件,否则将导致内存泄漏。最重要的是您需要取消订阅您订阅的每个活动。
private void webBrowser1_DocumentEventCleanup()
{
foreach (HtmlElement input in webBrowser1.Document.GetElementsByTagName("input"))
{
if (input.GetAttribute("type").ToLower() == "text")
{ //unsubscribe all the subscribe events
input.GotFocus -= null;
input.LostFocus -= null;
}
}
}