Timer statt Thread, aber wie?

  • Hallo zusammen!


    Ich hatte jüngst ein interessantes Telefonat mit einem Dreambox-Entwickler. Er meinte sinngemäß, zur Entwicklung von Plugins sollten zwecks Stabilität keine Python-Threads benutzt werden. Deswegen schreibe ich nun alle meine Plugins so um, dass sie mit Timern und Callback-Funktionen laufen. Dabei stelle ich aber ein Problem fest:
    Wenn das Plugin mit SESSIONSTART gestartet wird, arbeitet der Timer nach ein paar Sekunden nicht mehr. Er wird offensichtlich während des Bootvorganges bereits gekillt. Wenn ich den selben Code z. B. mit EXTENSIONSMENU über ein Menü aufrufe, läuft der Timer einwandfrei.


    Wie kann ich das umgehen (ohne Threads wohlgemerkt)? Oder gibt es andere Techniken?


    Hier ein bisschen Quellcode:


  • Hi,


    Du muss eigentlich ein class myTimer() machen und dann eine globale Variable:
    globTimer=myTimer()
    Dann kannst Du dann kannst Du bei SESSIONSTART zuerst die Session übergeben:
    globTimer.saveSession(session)


    So jetzt kanst Du bei SESSIONSTART starten, oder auch spätter starten, stopen usw.
    globTimer.start(10000), globTimer.stop() usw...


    So was ännliches (globale Timer) habe ich in DreamFit-Plugin gemacht;)
    DreamFit-Plugin


    Wenn ich in DreamFit in autostart auch dt_timer.changed() ausführe, funzt der Timer.


    Am bestens schau dir aber EPG-Refresh Plugin an , dort ist profimässig gemacht:winking_face:



    Ich glaube dein Prob ist, dass die popup Variable (popup=Popup(session) ) nur local für den autostart routine gestzt ist;)
    Du musst probieren die popup Variable auf globale niveau zu setzten (spicht ohne tabs vorher )

    44106818

    10 Mal editiert, zuletzt von _vali_ ()

  • Ich meine so was:

    44106818

    2 Mal editiert, zuletzt von _vali_ ()

  • Hi vali!


    Vielen Dank für den guten Hinweis! Die Klasse in den globalen Kontext zu stellen und per autostart mit dem session-Objekt zu füttern hat das Problem gelöst.


    Was täte Dream Multimedia nicht ohne seine Community... :grinning_face_with_smiling_eyes: