2016-07-01 7 views
-1

Ich habe eine Klasse, die einen threading.timer initialisieren. Ich muss sicherstellen, dass es nur eine Instanz des Timers in der gesamten Site ist. Ich denke, ich sollte Singleton dafür verwenden, ich bin richtig? Die Frage ist, wie soll ich das tun? Ich habe Singleton nie implementiert. Hier ist mein Code, Sie können so verstehen, was ich meine ..Verwenden Sie Singleton, um einen Timer zu verkapseln

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

Also, die Idee ist, wenn ich die Klasse starten initialice, slways die einige Timer verwenden, und nicht die Instanz neu. Danke

+4

Welche Untersuchungen haben Sie durchgeführt, um herauszufinden, wie Sie das Singleton-Muster in C# implementieren? Dafür stehen viele Ressourcen zur Verfügung. –

+0

Sie könnten ein gutes Beispiel finden, wenn Sie googeln würden "Implementieren des Singleton-Pattern in C#" –

Antwort

0

Normalerweise hätten Sie eine private statische Instanz Ihrer Klasse und einen statischen Getter. Machen Sie Ihren Konstruktor auch privat. Im Getter überprüfen Sie, ob die private Instanz bereits angelegt ist. Wenn nein, erstellen Sie es und geben Sie es zurück, wenn ja, geben Sie die Instanz zurück.

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

Diese Implementierung wird die meiste Zeit funktionieren, hat aber einige ernste Probleme. Sie sollten John Skeets Artikel über die Implementierung des Singleton-Musters unter http://csharpindepth.com/Articles/General/Singleton.aspx lesen und seinen Empfehlungen folgen. –

+0

@JimMischel ja, du hast Recht. Dies ist die einfachste Version eines Singletons, die nicht threadsicher ist. Aber in vielen Situationen wird dies ausreichen. – derpirscher

Verwandte Themen