ObjectDisposedException但是为什么以及处理什么?

时间:2017-01-30 11:01:43

标签: c# objectdisposedexception

因为标题说我不知道​​为什么会出现这个“ObejectDisposedException”。 在最后一次调用“OnDownloadUpdated(..)”期间完成下载后,就会发生这种情况。

“this.Invoke(..)”行抛出异常。

    ChromiumWebBrowser browser;

    public frmRocketPluginDownload()
    {
        InitializeComponent();

        var settings = new CefSettings();
        settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";


        Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);

        browser = new ChromiumWebBrowser("");
        browser.Dock = DockStyle.Fill;
        browser.AddressChanged += Browser_AddressChanged;
        browser.DownloadHandler = this;


        panelBody.Controls.Add(browser);
    }


    public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
    {
        this.Invoke((MethodInvoker)delegate
        {
            if (downloadItem.PercentComplete == 100)
            {
                this.Show();
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

是竞争条件。当Form在OnDownloadUpdated期间关闭时(我假设是从其他线程调用)然后由哪个操作首先结束:Form disposing或OnDownloadUpdated。如果方法已结束,则阻止在Form.Closing事件中进行此检查,否则将Closing.Cancel设置为true以防止关闭表单。