void ICefWebBrowserInternal.OnBrowserAfterCreated(CefBrowser browser) { this.DispatchIfRequired(() => { try { if (_browser != null) { return; } _browser = browser; using (var browserHost = _browser.GetHost()) { _browserWindowHandle = browserHost.GetWindowHandle(); if (_browserWindowHandle != IntPtr.Zero) { OnHandleCreated(); _widgetWindowZOrderHandler = new WidgetWindowZOrderHandler(_browserWindowHandle); } } if (!IsPopup) { if (BrowserAfterCreated != null) { BrowserAfterCreated(this, EventArgs.Empty); } } else { var parent = ParagonRuntime.FindBrowser <CefWebBrowser>(_parentBrowserId); if (parent == null) { Close(); } else { var ea = parent.RaiseShowPopup(this); if (ea == null || !ea.Shown) { Close(); } } } SetBrowserZoomLevel(); } catch (Exception ex) { Logger.Error("Error in OnBrowserAfterCreated : {0}", ex); throw; } }, true); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (_browser != null && disposing) { ParagonRuntime.RemoveBrowser(this); if (_widgetWindowZOrderHandler != null) { _widgetWindowZOrderHandler.Dispose(); _widgetWindowZOrderHandler = null; } if (_containerWindowMoveListener != null) { _containerWindowMoveListener.Dispose(); _containerWindowMoveListener = null; } if (_client != null) { _client.Dispose(); _client = null; } if (_router != null) { // Router should not be disposed here since it is shared by all cefwebbrowsers //_router.Dispose(); _router = null; } if (_browser != null) { _browser.Dispose(); _browser = null; } _browserWindowHandle = IntPtr.Zero; } }