示例#1
0
 public void Dispose()
 {
     lock (FLock)
     {
         if (FBrowser != null)
         {
             FBrowser.Close();
             FBrowser.Dispose();
         }
         FTextureResource.Dispose();
     }
 }
        protected override void ReceiveMessage(CefBrowser browser, PluginMessage pluginMessage)
        {
            var handler = PluginManager.GetLocalPlugin(pluginMessage.PluginId);

            if (handler == null)
            {
                // No handlers so cancel the query.
                if (pluginMessage.MessageType == PluginMessageType.FunctionInvoke)
                {
                    CancelUnhandledQuery(browser, pluginMessage);
                }
                browser.Dispose();
                return;
            }

            switch (pluginMessage.MessageType)
            {
            case PluginMessageType.FunctionInvoke:
                OnInvokeFunction(browser, pluginMessage, handler);
                break;

            case PluginMessageType.AddListener:
                OnAddListener(browser, pluginMessage, handler);
                break;

            case PluginMessageType.RemoveRetained:
                OnRemoveRetained(browser, pluginMessage, handler);
                break;
            }
        }
示例#3
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_browserPageImage != null)
                {
                    _browserPageImage.Source = null;
                    _browserPageImage        = null;
                }

                if (_browserPageBitmap != null)
                {
                    _browserPageBitmap = null;
                }

                // TODO: What's the right way of disposing the browser instance?
                if (_browserHost != null)
                {
                    _browserHost.CloseBrowser();
                    _browserHost = null;
                }

                if (_browser != null)
                {
                    _browser.Dispose();
                    _browser = null;
                }
            }
        }
示例#4
0
文件: Window.cs 项目: ulkyome/HtmlUi
        /// <summary>
        /// Releases unmanaged and - optionally - managed resources.
        /// </summary>
        /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            Application.Current.EnsureMainThread();

            if (!_disposed)
            {
                if (disposing)
                {
                    // CEF browser
                    if (CefBrowser != null)
                    {
                        var host = CefBrowser.GetHost();

                        if (host != null)
                        {
                            host.CloseBrowser(true);
                            host.Dispose();
                        }

                        CefBrowser.Dispose();
                    }

                    DestroyControllers();
                }

                _disposed = true;
            }
        }
示例#5
0
 public void Dispose()
 {
     if (FBrowser != null)
     {
         FBrowser.Close();
         FBrowserDetachedEvent.WaitOne();
         lock (FLock)
         {
             FBrowser.Dispose();
             FBrowser = null;
             FTextureResource.Dispose();
         }
         FBrowserAttachedEvent.Dispose();
         FBrowserDetachedEvent.Dispose();
     }
     if (FMouseSubscription != null)
     {
         FMouseSubscription.Dispose();
         FMouseSubscription = null;
     }
     if (FKeyboardSubscription != null)
     {
         FKeyboardSubscription.Dispose();
         FKeyboardSubscription = null;
     }
 }
示例#6
0
 public void Dispose()
 {
     callbackRegistry.Dispose();
     functionCallPromiseRegistry.Dispose();
     dynamicObjectPromiseRegistry.Dispose();
     browser.Dispose();
 }
示例#7
0
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            CefBrowser.Dispose();

            //Dispose Owin server
            Application.Current.Shutdown();
        }
示例#8
0
 internal void Close()
 {
     if (_browser != null)
     {
         _browser.Dispose();
         _browser = null;
     }
 }
        public void Dispose()
        {
            var browserhost = _CefBrowser.GetHost();

            browserhost.CloseBrowser(true);
            _CefFrame.Dispose();
            _CefBrowser.Dispose();
        }
示例#10
0
 public void Dispose()
 {
     if (CefBrowser != null)
     {
         var host = CefBrowser.GetHost();
         host.CloseBrowser(true);
         host.Dispose();
         CefBrowser.Dispose();
         CefBrowser = null;
     }
 }
示例#11
0
 public void Close()
 {
     if (_browser != null)
     {
         var host = _browser.GetHost();
         host.CloseBrowser(true);
         host.Dispose();
         _browser.Dispose();
         _browser = null;
     }
 }
示例#12
0
 public void Dispose()
 {
     if (_host != null)
     {
         _host.CloseBrowser();
         _host = null;
     }
     if (_browser != null)
     {
         _browser.Dispose();
         _browser = null;
     }
     CefRuntime.Shutdown();
 }
示例#13
0
        protected override void Dispose(bool disposing)
        {
            if (_browser != null)
            {
                var host = _browser.GetHost();
                host.CloseBrowser();
                host.ParentWindowWillClose();
                host.Dispose();
                _browser.Dispose();
                _browser             = null;
                _browserWindowHandle = IntPtr.Zero;
            }

            base.Dispose(disposing);
        }
示例#14
0
        protected override void Dispose(bool disposing)
        {
            if (_browser != null && disposing) // TODO: ugly hack to avoid crashes when CefWebBrowser are Finalized and underlying objects already finalized
            {
                var host = _browser.GetHost();
                host.CloseBrowser();
                host.ParentWindowWillClose();
                host.Dispose();
                _browser.Dispose();
                _browser             = null;
                _browserWindowHandle = IntPtr.Zero;
            }

            base.Dispose(disposing);
        }
        private void OnRemoveRetained(CefBrowser browser, PluginMessage pluginMessage, JavaScriptPlugin handler)
        {
            var info = _pendingCallbacks.Remove(pluginMessage.MessageId);

            if (info != null)
            {
                if (info.IsEventListener)
                {
                    handler.RemoveEventListener(pluginMessage.MemberName, info);
                }

                info.Dispose();
            }

            browser.Dispose();
        }
示例#16
0
        internal void Close()
        {
            if (!CefUtil.DISABLE_CEF)
            {
                _client.Close();

                if (_browser == null)
                {
                    return;
                }
                var host = _browser.GetHost();
                host.CloseBrowser(true);
                host.Dispose();
                _browser.Dispose();
            }
        }
示例#17
0
 public void Dispose()
 {
     if (FBrowser != null)
     {
         FBrowser.Close();
         FBrowserDetachedEvent.WaitOne();
         lock (FLock)
         {
             FBrowser.Dispose();
             FBrowser = null;
             FTextureResource.Dispose();
         }
         FBrowserAttachedEvent.Dispose();
         FBrowserDetachedEvent.Dispose();
     }
 }
        protected override void Dispose(bool disposing)
        {
            if (_browser != null && disposing) // TODO: ugly hack to avoid crashes when CefWebBrowser are Finalized and underlying objects already finalized
            {
                //var host = _browser.GetHost();//--注意 :这里作者把host 给释放了!会导致程序崩溃
                //if (host != null)
                //{
                //    host.CloseBrowser(true);
                //    host.Dispose();
                //}
                _browser.Dispose();
                _browser             = null;
                _browserWindowHandle = IntPtr.Zero;
            }

            base.Dispose(disposing);
        }
示例#19
0
        protected override void Dispose(bool disposing)
        {
            if (m_browser != null && disposing)
            {
                var host = m_browser.GetHost();
                if (host != null)
                {
                    host.CloseBrowser();
                    host.Dispose();
                }
                m_browser.Dispose();
                m_browser = null;
                m_browserWindowHandle = IntPtr.Zero;
            }

            base.Dispose(disposing);
        }
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                // TODO: What's the right way of disposing the browser instance?
                if (_browserHost != null)
                {
                    _browserHost.CloseBrowser(true);
                    _browserHost = null;
                }

                if (_browser != null)
                {
                    _browser.Dispose();
                    _browser = null;
                }
            }
        }
示例#21
0
        void DestroyBrowser()
        {
            if (browser != null)
            {
                // TODO: What's the right way of disposing the browser instance?
                if (browserHost != null)
                {
                    browserHost.CloseBrowser();
                    browserHost.Dispose();
                    browserHost = null;
                }

                if (browser != null)
                {
                    browser.Dispose();
                    browser = null;
                }
            }
        }
示例#22
0
        protected override void Dispose(bool disposing)
        {
            if (_browser != null && disposing) // TODO: ugly hack to avoid crashes when CefWebBrowser are Finalized and underlying objects already finalized
            {
                var host = _browser.GetHost();
                if (host != null)
                {
                    host.CloseBrowser();
                    host.Dispose();
                }
                _browser.Dispose();
                _browser             = null;
                _browserWindowHandle = IntPtr.Zero;
            }

            base.Dispose(disposing);

            /* BEG: erinus */
            CefRuntime.Shutdown();
            /* END: erinus */
        }
        protected override void OnBeforeClose(CefBrowser browser)
        {
            #if DIAGNOSTICS
            Cef.Logger.Trace(LogTarget.CefLifeSpanHandler, "OnBeforeClose");
            #endif

            // TODO: raise Closing event ?
            this.context.Detach();
            browser.Dispose();

            /*
            if (!browser.IsPopup)
            {
                browser.Dispose();

                if (this.context.browser != null)
                {
                    this.context.browser.Dispose();
                    this.context.browser = null;
                    this.context.browserWindowHandle = IntPtr.Zero;
                }

                if (!this.context.IsDisposed)
                {
                    if (this.context.InvokeRequired)
                    {
                        this.context.BeginInvoke(new Action(this.context.DestroyHandle));
                    }
                    else
                    {
                        this.context.DestroyHandle();
                    }
                }
            }
            else
            {
                browser.Dispose();
            }
            */
        }
示例#24
0
        protected override void OnBeforeClose(CefBrowser browser)
        {
            #if DIAGNOSTICS
            Cef.Logger.Trace(LogTarget.CefLifeSpanHandler, "OnBeforeClose");
            #endif

            // TODO: raise Closing event ?
            this.context.Detach();
            browser.Dispose();

            /*
             * if (!browser.IsPopup)
             * {
             *  browser.Dispose();
             *
             *  if (this.context.browser != null)
             *  {
             *      this.context.browser.Dispose();
             *      this.context.browser = null;
             *      this.context.browserWindowHandle = IntPtr.Zero;
             *  }
             *
             *  if (!this.context.IsDisposed)
             *  {
             *      if (this.context.InvokeRequired)
             *      {
             *          this.context.BeginInvoke(new Action(this.context.DestroyHandle));
             *      }
             *      else
             *      {
             *          this.context.DestroyHandle();
             *      }
             *  }
             * }
             * else
             * {
             *  browser.Dispose();
             * }
             */
        }
示例#25
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_tooltipTimer != null)
                {
                    _tooltipTimer.Stop();
                }

                if (_browserPageImage != null)
                {
                    _browserPageImage.Source = null;
                    _browserPageImage        = null;
                }

                if (_browserPageBitmap != null)
                {
                    _browserPageBitmap = null;
                }

                //                  if (this.browserPageD3dImage != null)
                //                      this.browserPageD3dImage = null;

                // TODO: What's the right way of disposing the browser instance?
                if (_browserHost != null)
                {
                    _browserHost.CloseBrowser();
                    _browserHost = null;
                }

                if (_browser != null)
                {
                    _browser.Dispose();
                    _browser = null;
                }
            }

            _disposed = true;
        }
示例#26
0
        //Should I be making a Dispose method as well? http://msdn.microsoft.com/en-us/library/fs2xkftw(v=vs.110).aspx
        //No, see implementing for derived class in article
        protected override void Dispose(bool disposing)
        {
            Debug.WriteLine(DBGPREFIX + "Start Dispose with browser" + ((_browser == null) ? " " : " not ") + "null");
            if (_browser != null && disposing) // TODO: ugly hack to avoid crashes when CefWebBrowser are Finalized and underlying objects already finalized
            {
                if (_browser.IsLoading)
                {
                    Debug.WriteLine(DBGPREFIX + "Browser still trying to load a page");
                    System.Threading.Thread.Sleep(50);
                }
                var host = _browser.GetHost();
                if (host != null)
                {
                    host.CloseBrowser(false);
                    host.Dispose();
                }
                _browser.Dispose();
                _browser = null;
                //Paint += PaintInDesignMode; //Not needed because LabVIEW creates a new control instance
            }

            base.Dispose(disposing);
            Debug.WriteLine(DBGPREFIX + "Finish Dispose");
        }
        protected override void ReceiveMessage(CefBrowser browser, PluginMessage pluginMessage)
        {
            switch (pluginMessage.MessageType)
            {
            case PluginMessageType.FunctionCallback:
            case PluginMessageType.EventFired:
                var payload = ParagonJsonSerializer.Deserialize <ResultData>(pluginMessage.Data);
                OnBrowserCallbackInvokeReceived(pluginMessage, payload);
                break;

            case PluginMessageType.RemoveRetained:
                // Remove a listener in the render process (handles browser side dynamic plugin dispose scenario)
                var retainedCallback = _pendingCallbacks.Remove(pluginMessage.MessageId);
                if (retainedCallback != null)
                {
                    retainedCallback.Dispose();
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            browser.Dispose();
        }
示例#28
0
 public void DisposeCefBrowser()
 {
     CefBrowser.Dispose();
     CefBrowser = null;
 }
示例#29
0
 internal void Detach()
 {
     FBrowser.Dispose();
     FBrowserDetachedEvent.Set();
 }
示例#30
0
 protected override void OnBeforeClose(CefBrowser browser)
 {
     FRenderer.Detach(browser);
     browser.Dispose();
     base.OnBeforeClose(browser);
 }
示例#31
0
 public new void Dispose()
 {
     logger.Debug($"Disposing {nameof(ManagedWebBrowser)}");
     CefBrowser.Dispose();
 }