Microsoft MVP성태의 닷넷 이야기
싱글톤과 싱글톤 소멸자에 대해 궁금점이 있습니다. [링크 복사], [링크+제목 복사],
조회: 19475
글쓴 사람
popo
홈페이지
첨부 파일
 

보통 객체를 하나만 생성해두고 공통적으로 여러 작업을 하기 위해 싱긍톤패턴을 사용하는데

그렇다면 싱글톤패턴을 사용한 클래스 객체는 소멸 시점이 어떻게 되는 것인가요 ?

사실 싱글톤을 사용한다는 자체가 소멸을 한다는 것이 맞는지도 햇갈립니다.

여기서 질문 입니다.

1. 싱글톤으로 사용을 하는 경우 소멸자가 전혀 필요가 없는 것인지

2. 만약 1번이 맞다면 강제적으로 Dispose해줄 수 는 없는 것인지

3. 싱글톤 안에서 new를 통해 새로운 객체를 생성했을때 그 객체에 대한 소멸은 어떤 방식으로 해야 하는 것인지.. 강제로 Dispose를 하는 것인지

4. 싱글톤의 소멸자에서 비동기로 다음과 같이 Task작업을 추가 했습니다.
var task = Task.Factory.StartNew(this.DoDispose);
Task.WaitAll(task);

해당 DoDispose메서드 부분에 BP를 찍고 디버깅 해보아도 프로그램이 종료되면서 분명 소멸자는 정상적으로 호출되는데 해당 메서드는 전혀 타질 않고 있었습니다.

프로그램이 종료되는 시점과 맞물려서 해당 작업이 비동기로 시작도 되기 전에 프로그램의 생명이 끝나서 제대로 비동기 작업 호출이 되지 않는 것 같은데..

싱글톤의 소멸자에서 비동기로 무언가의 작업을 한다는 것이 맞지 않는 것인지 궁금합니다.

답변 부탁드립니다. 감사합니다.








[최초 등록일: ]
[최종 수정일: 10/2/2014]


비밀번호

댓글 작성자
 



2014-10-02 01시23분
일단, 싱글톤이라고 다른 것이 없습니다. GC가 동작하는데 루트 참족 객체가 있다면 소멸되지 않을 뿐입니다. 그것을 기준으로 하면 1~3번 답은 찾을 수 있을 것입니다. 4번의 경우, 소멸자에서 스레드를 생성해 dispose를 다시 부른다는 것인데 매우 geek스러운 방법같습니다. 어쨌든 현상이 그렇고, 그 현상을 분석하면 그렇게 된 원인이 나오겠지만 암튼 일반적인 방법이 아닌 것은 맞는 것 같습니다.
정성태

... 16  17  18  19  20  21  22  23  24  25  26  27  28  29  [30]  ...
NoWriterDateCnt.TitleFile(s)
5164레드5/21/201918282실행 과정과 실행파일 디버그 시 Icon변경 질문드립니다. [5]
5163이대희5/20/201915148시작하세요 C# 7.3 프로그래밍 책 도착했습니다. [1]
5162채홍윤5/14/201919657Mono Develop window 설치 [6]
5161정대영5/13/201916099VS 2013에서 C#6.0(.netFramwork 4.6.1) $ 디버깅 오류 [1]
5160초보개발자5/13/201918235wcf 관련 국내 서적 살만한 책이 있나요? [2]
5159sdh25/9/201916384VS 2010 버전에서 생성한 DLL을 VS 2017버전에서 실행 시 에러 [2]
5158sdh5/8/201916447Visual studio 2010 버전에서 생성한 Project를 Visual studio 2017버전에서 실행에러 [1]
5157김경훈5/8/201919729Task 만들때 넘겨주는 CancellationToken은 어디서 사용 되는 건가요? [4]
5156rysoo5/8/201918779yield return의 리턴 타입 질문 드립니다. [4]
5155세퉁5/7/201921114관리자 권한으로 실행 시 알림창(?) 없이 바로 실행 시킬 수 있는 방법이 있을까요?? [2]파일 다운로드1
5154Soul...5/4/201916069NamedPipe 질문드립니다. [2]
5153개태5/4/201917284WCF RESTful Service에서 enum을 parameter로 쓰는방법 [2]
5152세퉁5/3/201918402인터넷 시간을 불러와 pc에 적용 시키고 싶습니다. [3]파일 다운로드1
5151이대희5/3/201915111C# 7.3으로 개정판 출간 계획이 있으신가요? [1]
5150김이현5/2/201918526C# 딕셔너리 생성에 대해 질문드립니다. [1]
5149민성5/1/201916190ftp 이미지 업로드중 [1]
5148wpf질문4/30/201916380특정 사이트를 wpf에서 popup을 항상 허용하게 할려면 어떻게 해야할까요? [5]
5147민성4/30/201914983wpf에서 작업관리자를 띠울려면 어떻게 해야 하나요? [1]
5146불파겐4/25/201914974하나의 필드를 여러 스레드에서 읽어갈 때 스레드 동기화를 하지 않으면 문제가 생길까요? [2]
5145e구름4/17/201918919Properties.Setting.Default값에 대해 질문드립니다. [2]
5144성태님 ...4/17/201915914질문하시기 전에 10000 페이지 오류 납니다. [1]
5143헌이4/16/201916873윈도우 작업표시줄에 프로그램 띄우기 [2]파일 다운로드1
5142cab2...4/9/201923188C#으로 만든 DLL 배포하기 [10]
5141하늘사랑4/5/201917782Axinterop 래퍼에 관해서 질문드립니다. [7]
5140게스트4/1/201916378안녕하세요. 초보 개발자입니다. SD리더기에서 SD카드를 꽂으면 발생하는 이벤트 문의 [2]
5139김이현3/28/201919734C#에서 CRON 같은 스케줄러를 사용하려면 어떻게 해야 하나요? [3]
... 16  17  18  19  20  21  22  23  24  25  26  27  28  29  [30]  ...