Timer stoppen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Mueck
User
Beiträge: 20
Registriert: Dienstag 16. November 2010, 02:20

Moin

Beschäftige mich gerade mit dem geordneten Beenden einer Anwendung bei div. unangenehmen Anlässen *) ...
Dafür habe ich eine Routine AllesZu, die bei div. Events aufgerufen wird, und die dann u.a. den Timer anhält und die Fenster demontiert ...

Code: Alles auswählen

      self.app.timer.Stop( )
      ...
      self.app.frame.Destroy( )
      ...
Der Timer bleibt aber nicht auf der Stelle stehen, sondern läuft ggfs. noch ein letztes Mal bis zum Ende durch. Und das unabhängig vom Stop-Aufruf.
Währenddessen zieht ihm das frame.Destroy schon paar Sachen unterm Hintern weg, was zu Fehlern führt ...
Ein ...

Code: Alles auswählen

   while self.app.timer.IsRunning( ) : ...
... einzuschieben hilft nix, denn das meint schon, er wäre schon nicht mehr running, während er noch bis zum Ende rennt ...
Was ist die einfachste Möglichkeit, mit dem frame.Destroy erst dann weiter zu machen, wenn der Timer wirklich durch ist?


*) Apropos Anlässe: Irgendwie finde ich gerade in der Python-Doku keine Liste der SIGxxx ... Gibt's eins als Ergebnis eines Abbruchs durch den TaskManager?
Mueck
User
Beiträge: 20
Registriert: Dienstag 16. November 2010, 02:20

Mueck hat geschrieben:

Code: Alles auswählen

   while self.app.timer.IsRunning( ) : ...
... einzuschieben hilft nix, denn das meint schon, er wäre schon nicht mehr running, während er noch bis zum Ende rennt ...
Von dort, wo ich Stop aufrufe, festzustellen, ob der Timer vorm Fenster-Destroy schon letztmalig durch ist, ist mir noch nicht gelungen.
Notbehelf derzeit: das IsRunning() funktioniert immerhin innerhalb des Timers, so dass beim Einbau desselben am Anfang (für das Verhindern des letztmaligen Durchlaufs nach dem Stop, der ansonsten wohl prinzipiell kommt?) und an den kritischen Stellen (für den Fall dass das Ctr-C o.ä. gerade beim Durchlaufen des Timers passiert) ein return den Timer verlassen kann. Ob ich mit diesem Workaround glücklich sein soll, weiß ich aber noch nicht ... Ist die Funktion des Timers irgendwo genauer beschrieben?
Antworten