Ich habe eine Klasse, die ein Objekt darstellt. Diese Klasse enthält einen Timer, der von Zeit zu Zeit eine Methode auslöst. Wenn jedoch schreibe ich etwas wie folgt aus:Richtig entworfen Klasse mit den Timern
var obj = new MyClass();
Dann am Ende wird das Objekt gelöscht und der Timer wird nicht einmal ein einziges Mal arbeiten. Aber ich brauche dieses Objekt im Speicher und ich brauche seine Arbeit nach dem Timer. So habe ich eine leere Methode einig nutzlosen Code enthält:
while(true){
int k=0;
}
Jetzt ist der Timer funktioniert, aber ich weiß nicht wirklich wie das Design. Irgendwelche Vorschläge, wie man es verbessert?
P.S. Dies ist, wie ich es testen: Ich habe eine Unit-Test erstellt, wo ich schrieb folgendes:
var obj = new MyClass();
int k=0;
ich einen Haltepunkt in der zweiten Zeile haben. Und wenn ich es erreiche, warte ich, um sicherzustellen, dass Timer nie läuft. Um den Timer machen zu arbeiten, muss ich den Test ändern:
var obj = new MyClass();
obj.EmptyWork();
int k=0;
Nun werden die Timer funktioniert, aber ich nie int k = 0 erreichen; und folglich kann ich das zweite Objekt usw. nicht erstellen.
das Objekt, das Sie Leben schaffen, solange Sie eine Lebensdauer für sie haben, also wenn Sie einen Anruf Funktion und es erstellt das Objekt, aber es ist nur in diesem Objekt definiert, dann ist das, wie lange es lebt .. bis zum Ende der Funktion. Sie haben nicht genug gezeigt, um Ihre Lebensdauer des Objekts zu erklären oder was Sie wirklich tun – BugFinder
Wenn der Ereignishandler Ihres Timers an eine Methode in Ihrer Klasse angehängt ist, wird sie am Leben erhalten, da Timer rooted sind, bis sie gelöscht werden. Veröffentlichen Sie den Code, in dem Sie den Timer instanziieren und anhängen, und wie Sie Ihre Klasse verwenden. – Groo
Hinzugefügt mehr Beschreibung –