因为标题说我不知道为什么会出现这个“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();
}
});
}
答案 0 :(得分:0)
是竞争条件。当Form在OnDownloadUpdated期间关闭时(我假设是从其他线程调用)然后由哪个操作首先结束:Form disposing或OnDownloadUpdated。如果方法已结束,则阻止在Form.Closing事件中进行此检查,否则将Closing.Cancel设置为true以防止关闭表单。