확장 된 정적 멤버가있는 클래스가 있으며 그 중 일부는 관리되는 개체와 관리되지 않는 개체에 대한 참조를 유지합니다.C# 정적 멤버는 언제 어떻게 폐기됩니까?
예를 들어, 유형이 참조되는 즉시 정적 생성자가 호출되어 클래스가 Tasks의 blockingQueue를 회전시킵니다. 이것은 정적 메소드 중 하나가 호출 될 때 발생합니다.
IDisposable을 구현 했으므로 내가 만든 모든 인스턴스 개체에서 처리를 처리 할 수있는 방법을 제공합니다. 그러나 소비자가 클래스에서 인스턴스 객체를 만들지 않으면 이러한 메서드가 호출되지 않습니다.
클래스의 정적 부분에서 유지 관리되는 참조를 처리하는 코드를 어떻게 그리고 어디서 처리해야합니까? 나는 마지막 인스턴스 객체가 해제 될 때 정적 참조 된 리소스의 처리가 발생했다고 항상 생각했다. 인스턴스를 만들 수없는 클래스를 만든 적이 처음입니다.
정적 아이템은 어플리케이션의 전체 실행 가능하다. NEW 키워드를 사용하여 정적 항목을 만들지 않으므로 아무 것도 실제로 인스턴스화하지 않기 때문에 아무 것도 여러 인스턴스가 없다는 것을 의미합니다. 관리 대상에 대해서는 걱정하지 마시고 GC가 처리해 드리겠습니다. 관리되지 않는 리소스는 정적이 아닌 클래스에서 사용하려고 시도하거나 응용 프로그램을 닫을 때까지 유지됩니다. 정적 항목은 처분을 지원하지 않습니다. – alexandrudicu
감사합니다. 나는 나의 디자인을 여기에서 재고 할 필요가있는 것처럼 보인다. – Joe