Esempio n. 1
0
 private void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (handle_ != null)
         {
             handle_.Dispose();
             handle_ = null;
         }
     }
 }
Esempio n. 2
0
        internal JavaScriptEngine(JavaScriptEngineSafeHandle handle, JavaScriptRuntime runtime, ChakraApi api)
        {
            Debug.Assert(handle != null);
            Debug.Assert(runtime != null);
            Debug.Assert(api != null);
            api_ = api;

            handle_               = handle;
            runtime_              = new WeakReference <JavaScriptRuntime>(runtime);
            converter_            = new JavaScriptConverter(this);
            nativeFunctionThunks_ = new List <NativeFunctionThunkData>();
            externalObjects_      = new HashSet <ExternalObjectThunkData>();

            handlesToRelease_  = new List <IntPtr>();
            handleReleaseLock_ = new object();
        }
Esempio n. 3
0
        internal JavaScriptEngine(JavaScriptEngineSafeHandle handle, JavaScriptRuntime runtime, ChakraApi api)
        {
            Debug.Assert(handle != null);
            Debug.Assert(runtime != null);
            Debug.Assert(api != null);
            api_ = api;

            handle_               = handle;
            runtime_              = new WeakReference <JavaScriptRuntime>(runtime);
            converter_            = new JavaScriptConverter(this);
            nativeFunctionThunks_ = new List <NativeFunctionThunkData>();
            externalObjects_      = new HashSet <ExternalObjectThunkData>();

            handlesToRelease_  = new List <IntPtr>();
            handleReleaseLock_ = new object();

            ClaimContextPrivate();
            JavaScriptValueSafeHandle global;

            Errors.ThrowIfIs(api_.JsGetGlobalObject(out global));
            global_ = CreateObjectFromHandle(global);
            JavaScriptValueSafeHandle undef;

            Errors.ThrowIfIs(api_.JsGetUndefinedValue(out undef));
            undefined_ = CreateValueFromHandle(undef);
            JavaScriptValueSafeHandle @null;

            Errors.ThrowIfIs(api_.JsGetNullValue(out @null));
            null_ = CreateObjectFromHandle(@null);
            JavaScriptValueSafeHandle @true;

            Errors.ThrowIfIs(api_.JsGetTrueValue(out @true));
            true_ = CreateValueFromHandle(@true);
            JavaScriptValueSafeHandle @false;

            Errors.ThrowIfIs(api_.JsGetFalseValue(out @false));
            false_ = CreateValueFromHandle(@false);
            ReleaseContextPrivate();
        }
Esempio n. 4
0
        private void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (handle_ != null)
                {
                    handle_.Dispose();
                    handle_ = null;
                }
            }
            var strong = strongGCHandles;

            if (strong != null)
            {
                strongGCHandles = null;
                foreach (var item in strong)
                {
                    item.Free();
                }
            }
            externalObjectsDict = null;
            externalObjects_    = null;
        }