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); } }