Exemplo n.º 1
0
        /// <summary>
        /// 자원을 해제 합니다.
        /// </summary>
        /// <param name="releaseAll">관리자원 포함 여부</param>
        protected void Dispose(bool releaseAll)
        {
            if (_wasCallDispose == true)
            {
                return;
            }
            else
            {
                _wasCallDispose = true;
            }

            //관리자원 해제
            if (releaseAll == true)
            {
                ReleaseManagementResource();
            }

            //비관리자원 해제
            //TODO


            //마무리
            _isValid = false;
            _assemblyRefCounter.DecrementRefCounter();
            _assemblyRefCounter  -= _methodInvokerCounter;
            _assemblyRefCounter   = null;
            _methodInvokerCounter = null;

            //생성된 MethodInvoker들에게 통지 및 자원해제
            if (EventInvalidProxy != null)
            {
                EventInvalidProxy(this, null);
                EventInvalidProxy = null;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 전달 값에 따른 리소스를 해제 합니다.
        /// </summary>
        /// <param name="releaseAll">관리형 리소스를 포함 합니다.</param>
        protected void Dispose(bool releaseAll)
        {
            if (_wasCallDispose == true)
            {
                return;
            }
            else
            {
                _wasCallDispose = true;
            }

            //관리형 리소스를 해제 한다.
            if (releaseAll == true)
            {
                ReleaseManagementResource();
            }

            //비관리형 리소스 해제
            //TODO


            //마무리
            _isValid = false;
            _instanceRefCounter.DecrementRefCounter();
            _instanceRefCounter = null;

            //비유효화 통지
            if (EventInvalidInvoker != null)
            {
                EventInvalidInvoker(this, null);
            }
        }