2016-07-01 6 views
-1

私はthreading.timerを初期化するクラスを持っています。私はすべてのサイトでタイマーのインスタンスが1つだけであることを確認する必要があります。 シングルトンを使うべきだと思います。 質問は、どうしたらいいですか?私はSingletonを実装したことはありません。私はクラススタートを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#でシングルトンパターンを実装する"というGoogleの優れた例が見つかるかもしれません –

答えて

0

通常、あなたのクラスのプライベート静的インスタンスと静的ゲッターがあります。コンストラクタも非公開にしてください。 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

関連する問題