/// <summary> /// Releases the unmanaged resources used by the <see cref="T:System.Windows.Forms.Control" /> and its child controls and optionally releases the managed resources. /// </summary> /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param> protected override void Dispose(bool disposing) { Cef.RemoveDisposable(this); if (disposing) { browser = null; IsBrowserInitialized = false; if (BrowserSettings != null) { BrowserSettings.Dispose(); BrowserSettings = null; } if (parentFormMessageInterceptor != null) { parentFormMessageInterceptor.Dispose(); parentFormMessageInterceptor = null; } if (managedCefBrowserAdapter != null) { managedCefBrowserAdapter.Dispose(); managedCefBrowserAdapter = null; } // Don't maintain a reference to event listeners anylonger: LoadError = null; FrameLoadStart = null; FrameLoadEnd = null; LoadingStateChanged = null; ConsoleMessage = null; StatusMessage = null; AddressChanged = null; TitleChanged = null; IsBrowserInitializedChanged = null; } // Release reference to handlers, make sure this is done after we dispose managedCefBrowserAdapter // otherwise the ILifeSpanHandler.DoClose will not be invoked. this.SetHandlersToNull(); base.Dispose(disposing); }
protected override void Dispose(bool disposing) { // Don't utilize any of the handlers anymore: this.SetHandlersToNull(); Cef.RemoveDisposable(this); if (disposing) { IsBrowserInitialized = false; if (BrowserSettings != null) { BrowserSettings.Dispose(); BrowserSettings = null; } if (parentFormMessageInterceptor != null) { parentFormMessageInterceptor.Dispose(); parentFormMessageInterceptor = null; } if (managedCefBrowserAdapter != null) { managedCefBrowserAdapter.Dispose(); managedCefBrowserAdapter = null; } // Don't maintain a reference to event listeners anylonger: LoadError = null; FrameLoadStart = null; FrameLoadEnd = null; LoadingStateChanged = null; ConsoleMessage = null; StatusMessage = null; AddressChanged = null; TitleChanged = null; IsBrowserInitializedChanged = null; } base.Dispose(disposing); }
/// <summary> /// Called after browser created. /// </summary> /// <param name="browser">The browser.</param> void IWebBrowserInternal.OnAfterBrowserCreated(IBrowser browser) { this.browser = browser; IsBrowserInitialized = true; // By the time this callback gets called, this control // is most likely hooked into a browser Form of some sort. // (Which is what ParentFormMessageInterceptor relies on.) // Ensure the ParentFormMessageInterceptor construction occurs on the WinForms UI thread: this.InvokeOnUiThreadIfRequired(() => { parentFormMessageInterceptor = new ParentFormMessageInterceptor(this); }); ResizeBrowser(); var handler = IsBrowserInitializedChanged; if (handler != null) { handler(this, new IsBrowserInitializedChangedEventArgs(IsBrowserInitialized)); } }
protected override void Dispose(bool disposing) { // Don't utilize any of the handlers anymore: DialogHandler = null; JsDialogHandler = null; KeyboardHandler = null; RequestHandler = null; DownloadHandler = null; LifeSpanHandler = null; MenuHandler = null; DragHandler = null; GeolocationHandler = null; FocusHandler = null; ResourceHandlerFactory = null; Cef.RemoveDisposable(this); if (disposing) { IsBrowserInitialized = false; if (BrowserSettings != null) { BrowserSettings.Dispose(); BrowserSettings = null; } if (parentFormMessageInterceptor != null) { parentFormMessageInterceptor.Dispose(); parentFormMessageInterceptor = null; } if (managedCefBrowserAdapter != null) { managedCefBrowserAdapter.Dispose(); managedCefBrowserAdapter = null; } // Don't maintain a reference to event listeners anylonger: LoadError = null; FrameLoadStart = null; FrameLoadEnd = null; NavStateChanged = null; ConsoleMessage = null; StatusMessage = null; AddressChanged = null; TitleChanged = null; IsBrowserInitializedChanged = null; IsLoadingChanged = null; } base.Dispose(disposing); }