我在MSDN里看到使用完webbrowser之后要调用dispose方法释放.但是我在窗体关闭的时候调用Dispose方法.会打开一个新的IE,IE的网址就是窗体关闭时webbrowser的网址. private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsoluteUri.StartsWith(m_xxxxx.m_strRedirect_uri))
{
m_xxxxx.set(e.Url.AbsoluteUri);
DialogResult = DialogResult.OK;
Close();
}
} private void GrantForm_FormClosed(object sender, FormClosedEventArgs e)
{
webBrowser.Dispose();
}MSDN上还说调用ShowDialog之后也需要调用dispose,刚好这个窗口里面有个webbrowser.调用dispose时一样会打开一个IE和上面情况一样.其实这就是上面webbrowser的窗体. GrantForm grantForm = new GrantForm();
if (grantForm.ShowDialog() == DialogResult.OK)
{
threadClass.m_xxxxx = grantForm.m_xxxxx;
}
请问怎么正确的释放webbrowser和ShowDialog的窗体
{
if (e.Url.AbsoluteUri.StartsWith(m_xxxxx.m_strRedirect_uri))
{
m_xxxxx.set(e.Url.AbsoluteUri);
DialogResult = DialogResult.OK;
Close();
}
} private void GrantForm_FormClosed(object sender, FormClosedEventArgs e)
{
webBrowser.Dispose();
}MSDN上还说调用ShowDialog之后也需要调用dispose,刚好这个窗口里面有个webbrowser.调用dispose时一样会打开一个IE和上面情况一样.其实这就是上面webbrowser的窗体. GrantForm grantForm = new GrantForm();
if (grantForm.ShowDialog() == DialogResult.OK)
{
threadClass.m_xxxxx = grantForm.m_xxxxx;
}
请问怎么正确的释放webbrowser和ShowDialog的窗体
窗体设计器会生成把webbrowser控件加到Controls这个集合的代码。这个集合由Form负责在自己被Dispose的时候清理。MSDN上的代码是针对你自己创建webbrowser控件但是不加到Controls这个集合的情况的。但是不管用Show还是ShowDialog,一个Form都需要被Dispose掉。最简单的办法是加一个using,这样超出作用域的时候grantForm的窗口被自动销毁和Dispose。using(GrantForm grantForm = new GrantForm())
{
grantForm.ShowDialog();
......
}