Gegeben ein Programm, das einen Dialog aufruft.
In dem Dialog kann die Abarbeitung (Suche nach etwas) mehrere Sekunden (bis zu einer Minute dauern). Nun möchte ich im Programm in der Zwischenzeit weiterarbeiten können (in der Zeit in dem der Dialog beschäftigt ist) und die Suche sollte eventuell mit niedriger Performance (das nice erhöhen) vor sich gehen.
Ich zeige den Dialog mit Show und nicht mit ShowModal.
d.h. in etwa, im Dialog
Code: Alles auswählen
self.Bind(wx.EVT_BUTTON, self.OnbtnOpen, id = wx.ID_OK)
Code: Alles auswählen
d = MeinDialog(parent)
d.Show()
#... #hier soll das Programm sofort weitermachen
Die Sache, die so lange dauert, ist das auffüllen der Listctrl mit evtl. tausenden von Einträgen (ich weiss dass das nicht besonders sinnvoll ist, aber mich würde es interessieren, wie man das auslagern kann, ohne das Hauptprogramm zu blockieren).
---
Unterm Fragen kommt man oft drauf. Ein einfaches wx.Yield in bestimmten Abständen immer wieder aufgerufen scheint völlig ausreichend zu sein. Nicht zu oft, um nicht den Thread zu blockieren.