private void ReleaseWebView() { if (webView != null) { webView.Dispose(); webView = null; } if (webViewListener != null) { webViewListener.Dispose(); webViewListener = null; } }
private void InitializeWebView(int width, int height) { try { RaiseStatus("Creating WebView"); webView = webCore.CreateWebView(width, height); webView.SetTransparent(IsTransparent); RaiseStatus("Initializign WebViewListener"); webViewListener = new WebViewListener(); webViewListener.BeginNavigation += delegate(string url, string frameName) { RaiseStatus(string.Format("BeginNavigation: {0}", url)); if (BeginNavigation != null) { BeginNavigation(this, new UrlEventArgs(url, frameName)); } if (string.IsNullOrEmpty(frameName)) { Dispatcher.BeginInvoke((Action) delegate { Source = loadedUrl = url; }, DispatcherPriority.Render); } }; webViewListener.BeginLoading += delegate(string url, string frameName, int statusCode, string mimeType) { RaiseStatus(string.Format("BeginLoading: {0}", url)); if (BeginLoading != null) { BeginLoading(this, new LoadingEventArgs(url, frameName, statusCode, mimeType)); } }; webViewListener.FinishLoading += delegate { RaiseStatus(string.Format("FinishLoading")); if (FinishLoading != null) { FinishLoading(this, EventArgs.Empty); } }; webViewListener.ReceiveTitle += delegate(string title, string frameName) { RaiseStatus(string.Format("ReceiveTitle: {0}", title)); }; webViewListener.ChangeCursor += delegate(ValueType cursorHandle) { Dispatcher.BeginInvoke((Action) delegate { Cursor = CursorInteropHelper.Create(new SafeFileHandle((IntPtr)cursorHandle, false)); }, DispatcherPriority.Render); }; webViewListener.ChangeTooltip += delegate(string text) { Dispatcher.BeginInvoke((Action) delegate { try { if (text != null && text.Trim().Length > 0 && IsFocused) { tooltip.Content = text; tooltip.IsOpen = true; } else { tooltip.IsOpen = false; } } catch { } }, DispatcherPriority.Render); }; webViewListener.ChangeKeyboardFocus += delegate(bool isFocused) { isBrowserFocused = isFocused; }; webView.SetListener(webViewListener); webView.Focus(); } catch (Exception ex) { RaiseStatus(ex.Message + ex.StackTrace); } }