C#:ObjectDisposedException未被用户代码处理

时间:2011-10-28 00:13:34

标签: c# forms user-interface interface browser

我正在开展一个秘密项目,基本上它是使用网​​页浏览器转到页面填写表单然后点击提交。

昨天一切正常,但今天我的界面每次都会在网站上的表格填写数据的时候一直停滞不前。

在C#IDE中,这是我得到的错误:

  

C#:ObjectDisposedException未被用户代码

处理

......当我看到它的细节时,我得到了:

  

当前上下文中不存在名称“$ exception”

有人知道我必须做什么吗?我是否必须处理某些东西或......?

1 个答案:

答案 0 :(得分:1)

假设

webBrowser1

的类型为

System.Windows.Forms.WebBrowser

然后错误只是意味着在调用其余代码之前已经放置了webBrowser1对象。因此,修复方法是确保在适当的时候处理对象。

在using块中声明webBrowser1对象将使范围更加明确,例如。

using(System.Windows.Forms.WebBrowser webBrowser1 = new System.Windows.Forms.WebBrowser())
{

    //put calls to your functionality here e.g.
    webBrowser1.Document.GetElementById("oauth_signup_client_fullname")
       .SetAttribute("‌​value", txtBoxImportNames1.Text + txtBoxImportNames2.Text);

    //or pass it to another function, and it will still get disposed correctly, e.g.
    myOtherFunctionality(webBrowser1);

}

将有助于确保您都适当地处理WebBrowser对象(因为它是资源密集型的),并且只在它处于活动状态时才使用它(因为它只能在using块中访问)。

The using block also helps ensure proper disposal even when an exception occurs.