2010-01-21 6 views
2

Windows 서비스를 사용하여 자체 호스팅되는 단일 인스턴스 WCF 서비스 클래스가 있습니다. OnStart 이벤트에서 서비스 호스트를 설정하고 OnStop 이벤트에서 서비스를 닫습니다.WCF 서비스 종료

서비스 클래스에서 소멸자를 구현하고 거기에 정리 코드가 있습니다. 본질적으로 클린업 코드는 다음 번에 몇 가지 내부 개체를 디스크에 직렬화하고 두 개의 파일을 생성해야합니다.

내가보기에 때로는 두 파일, 때로는 하나, 때로는 빈 파일이 들어있어 데이터가 있어야합니다. 소멸자가 전체 서비스 프로세스가 끝나기 전에 객체의 직렬화를 완료하는 데 시간이 걸리지 않는 것처럼 보입니다.

서비스가 종료되기 바로 전에 일반적인 방식으로 사용하고 있습니까? 아니면 더 좋은 방법이 있습니까?

답변

4

소멸자는 이런 종류의 논리 b/c를 수행하기에 좋지 않습니다. 어떤 하위 또는 상위 오브젝트의 상태가 보장 될 수는 없습니다. 그들 중 일부는 소멸자가 호출 될 때 호출되는 Dispose 로직을 가질 수 있습니다.

클래스에 명시적인 Save 메서드를 넣고 OnStop 중에 호출하는 것이 좋습니다. 소멸자에서 저장을 숨기고 코드를 읽는 사람들로부터 부작용을 숨길 이유가 없습니다.