Beispiel #1
0
        ///////////////////////////////////////////////////////////////////////

        private ReturnCode MaybeUnloadModule(
            IModule module,
            ref Result error
            )
        {
            lock (syncRoot) /* TRANSACTIONAL */
            {
                if (this.module == null)
                {
                    return(ReturnCode.Ok);
                }

                if (Object.ReferenceEquals(module, this.module))
                {
                    return(ReturnCode.Ok);
                }

                if (moduleLoaded > 0)
                {
                    if (RuntimeOps.UnloadNativeModule(
                            this.module, ref moduleLoaded,
                            ref error) != ReturnCode.Ok)
                    {
                        return(ReturnCode.Error);
                    }
                }

                this.module = null;
            }

            return(ReturnCode.Ok);
        }
Beispiel #2
0
        ///////////////////////////////////////////////////////////////////////

        #region Private Methods
        //
        // NOTE: This method assumes the lock is held.
        //
        private ReturnCode UnloadModule(
            ref int loaded,
            ref Result error
            )
        {
            return(RuntimeOps.UnloadNativeModule(
                       module, ref loaded, ref error));
        }