我在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的窗体

解决方案 »

  1.   

    如果你是往窗体上拖webbrowser控件的话,不需要在Form类中做任何事情。
    窗体设计器会生成把webbrowser控件加到Controls这个集合的代码。这个集合由Form负责在自己被Dispose的时候清理。MSDN上的代码是针对你自己创建webbrowser控件但是不加到Controls这个集合的情况的。但是不管用Show还是ShowDialog,一个Form都需要被Dispose掉。最简单的办法是加一个using,这样超出作用域的时候grantForm的窗口被自动销毁和Dispose。using(GrantForm grantForm = new GrantForm())
    {
          grantForm.ShowDialog();
          ......
    }