Beispiel #1
0
        protected virtual void Dispose(bool disposing)
        {
            CheckDisposed();

            if (disposing)
            {
                _shutingDown = true;
                foreach (JsContext context in _aliveContexts.Values)
                {
                    if (context.IsFromNativeContext)
                    {
                        context.Dispose();
                    }
                    else
                    {
                        JsContext.DisposeContextFromNativeSide(context);
                    }
                }
                _aliveContexts.Clear();
                //
                foreach (JsScript script in _aliveScripts.Values)
                {
                    script.Dispose();
                }
                _aliveScripts.Clear();
            }


            _disposed = true; //? here?

#if DEBUG_TRACE_API
            Console.WriteLine("Calling jsEngine dispose: " + _engine.Handle.ToInt64());
#endif

            if (!_engineFromNativePtr && !_nativeSideWasDisposed)
            {
                jsengine_dispose(_engine);
            }
        }