Thread und Dialog

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Hallo, wer weiß, wie ich das am besten lösen kann?

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)
Hier wird eine Suche ausgeführt und am Schluss in eine ListCtrl gegeben

Code: Alles auswählen

d = MeinDialog(parent)
d.Show()
#... #hier soll das Programm sofort weitermachen
Muss ich den Dialog selbst irgendwie als Thread öffenen. Aber das beisst sich ja wieder mit dem Grundsatz, in den Threads keine GUI Ausgaben zu machen.

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.
BlackJack

@Francesco: Ansonsten könntest Du Dir in der Demo/Doku auch mal `DelayedResult` anschauen.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

BlackJack hat geschrieben:@Francesco: Ansonsten könntest Du Dir in der Demo/Doku auch mal `DelayedResult` anschauen.
Aha, hört sich ja sehr treffend an, danke BlackJack.
Antworten