2016-07-01 2 views
-1

threading.timer를 초기화하는 클래스가 있습니다. 모든 사이트에서 타이머의 인스턴스가 하나만 존재하는지 확인해야합니다. 나는 그것을 위해 싱글 톤을 사용해야한다고 생각하는데, 맞습니까? 질문은, 어떻게해야합니까? 나는 싱글 톤을 결코 구현하지 않았다. 내가 수업 시작을 initialice 때 싱글 톤을 사용하여 타이머 캡슐화

public class start 
{ 
    public start() 
    { 
     var timer = new Timer(CallBack, null, 0, 60000); 
    } 
    private void CallBack(object obj) 
    { 
     //Code 
    } 
} 

그래서, 생각은, slways는 일부 타이머, 그리고 예를 새로운 하나를 사용하십시오 .. 다음은 내 코드입니다, 그래서 당신은 내가 무슨 뜻인지 이해할 수있다. 감사합니다.

+4

C#으로 싱글 톤 패턴을 구현하는 방법을 찾는 데있어 어떤 연구를 했습니까? 거기에 사용할 수있는 자원이 많이 있습니다. –

+0

"C#으로 싱글 톤 패턴 구현하기"를 수행한다면 좋은 예제를 찾을 수있을 것입니다. –

답변

0

일반적으로 클래스의 정적 정적 인스턴스와 정적 getter가 있습니다. 생성자를 private로 만듭니다. getter에서 개인 인스턴스가 이미 생성되었는지 여부를 확인합니다. 아니요 인 경우 만들고 작성한 다음 인스턴스를 반환하십시오.

public class MySingleton { 
    private static MySingleton instance_ = null; 

    private Timer timer_; 


    public static GetInstance(){ 
     if (instance_ == null) instance_ = new MySingleton(); 
     return instance_; 
    } 

    private MySingleton(){ 
     timer_ = new Timer(Callback, ...); 
    } 
} 
+0

이 구현은 대부분 시간이 걸리지 만 심각한 문제가 있습니다. Singleton 패턴 구현에 대한 John Skeet의 기사 (http://csharpindepth.com/Articles/General/Singleton.aspx)를 읽고 권장 사항을 따르십시오. –

+0

@JimMischel 네, 맞습니다. 이것은 스레드 세이프가 아닌 싱글 톤의 가장 단순한 버전입니다. 그러나 많은 경우에 이것은 충분할 것입니다. – derpirscher

관련 문제