C#에서, 클래스는 어떻게 ASP.NET 및 비 WEB 애플리케이션에서 작동하는 방식으로 자체 애플리케이션 엔드 마무리를 수행 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/19847181

문제

ASP.NET 및 비 -WEB 애플리케이션에 사용되는 라이브러리 클래스가있어서 종료 마무리가 필요합니다.

내 프로젝트의 라이브러리 내에서, 클래스가 개발자가 Global.application_end 또는 AppDomain.currentDomain.processexit에 전화를 추가하지 않고도 자체 신청 마무리를 수행하기를 원합니다.

이 작업은 어떻게 할 수 있습니까?

추가 배경/근거 :

이러한 옵션을 고려하더라도 IIS에서 ASP .NET 응용 프로그램이 중지 될 때 AppDomain.currentDomain.processexit이 호출되지 않은 것으로 보입니다. 및 global.application_end는 ASP .NET에만 해당됩니다. 따라서 어느 옵션도 두 상황과 호환되지 않습니다.

이것이 필요한 이유에 대한 구체적인 예를 갖는 데 도움이된다면 ...이 특정한 경우, Sqldependency를 사용하여 (이해할 수 있듯이) 초기화를 위해 start 및 응용 프로그램 전에 sqldependency.stop으로 통화해야합니다. 종료.

(보다 http://msdn.microsoft.com/en-us/library/ms172133.aspx)

도움이 되었습니까?

해결책

이 답변에 설명 된 시뮬레이션 된 정적 약혼자가 https://stackoverflow.com/a/256278/449837, 웹 및 비 WEB 애플리케이션에서 작동합니다.

다음은 제가 작업 한 샘플입니다.

public class ClassThatNeedsStaticFinalizer {

    // ... other class properties, methods, etc ...     

    #region Static Finalizer Emulation

    static readonly Finalizer finalizer = new Finalizer();
    private sealed class Finalizer
    {
        ~Finalizer()
        {
             //  ... Do final stuff here ...
        }
    }

    #endregion
}

(참고 : LinqPad와 같은 일부 코드 스크래치 패드 환경의 경우 ~ ScratchPad 앱 자체가 닫히기 전까지는 최종화기가 발생하지 않을 수 있습니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top