User Interface Threads
-
Hallo alle!
Ich versuche mich gerade im Programmieren von UI Threads. Ich habe dabei eine SDI Anwendung erstellt, die ich von CFormView abgeleitet habe. Soweit so gut. Auf der Oberfläche sollen nun bis zu 8 Dialogfelder erstellt werden können, welche alle in einem separaten Thread laufen.
Ich habe dabei versucht, nach dieser Anleitung zu gehen, die zwar sagt, wie man in einer Dialogbasierten Applikation vorgeht, aber ich dachte mir, es sei bei SDI eventuell ähnlich.
[url]
http://www.codeproject.com/threads/threads_and_mfc.asp
[/url]In dieser Anleitung wird das Dialogfeld im Konstruktor der Dialogfeldklasse erstellt, dies klappt bei mir aber so überhaupt nicht.
Hat vielleicht jemand von Euch einen Tipp, wie ich da am besten vorgehen soll?
Ich starte den Thread von meiner Viewklasse aus:theApp.m_pThread=AfxBeginThread(RUNTIME_CLASS(ThreadEngine));
Danach erzeuge ich eine Instanz meiner Dialogfeldklasse in der InitInstance meiner ThreadKlasse:
m_pMainWnd=new CDlgPCTL; m_pMainWnd->SetForegroundWindow(); m_pMainWnd->ShowWindow(SW_SHOW);
Schlussendlich müsste laut Anleitung noch das Dialogfenster kreiert werden, dies im Konstruktor der Dialogfeldklasse, klappt aber so nicht...
Grüsse
Dan
-
Hallo zusammen...
Hat wirklich noch niemand sowas mal zusammengebaut?
Ich beschreibe mal noch ein bisschen, was meine APP dann am Schluss machen sollte:
Ich habe wie schon erwähnt eine SDI APP, welche bis zu 8 zusätzliche Dialoge enthalten kann. Jeder Dialog kann eine serielle Schnittstelle (Bis zu 8 möglichen) separat für 5 Minuten auslesen (Ausgelöst wird das Auslesen durch den User)...
Die verbleibende Zeit wird via Timer auf dem GUI angezeigt und jede Zehntelssekunde aktualisiert.
Wenn ich nun einen Vorgang gestartet habe und währenddessen den zweiten Vorgang starte (COM Port öffnen und COM Listener Thread anwerfen), wird die Aktualisierung der Oberfläche für kurze Zeit unterbrochen, was eigentlich nicht sein darf.
Daher kam mir die Idee, jeden Dialog in einem separaten Thread laufen zu lassen...Gäbe es auch noch andere Möglichkeiten, dieses Problem in den Griff zu bekommen?
Danke und Gruz
Dan