Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Multithreaded/MultiprocessTabbed-UI - wie realisieren?

  Alt 30. Apr 2018, 09:01
Moin, mitten im verlängerten Wochenende

Ich spiele gedanklich die verschiedenen Möglichkeiten durch, wie man ein Tabbed-UI realisieren könnte, das ähnlich modernen Webbrowsern jeden Tab in einem eigenen Thread bzw. besser noch eigenen Prozess laufen lässt. Es gibt also noch keine konkreten Quellcodes sondern nur Gedankenspiele.

Multiprocessed hätte für mich im Augenblick die Nase vorn. Die zuerst gestartete Instanz der Anwendung wäre automatisch als Mutteranwendung gesetzt. Evt. in der Art, dass die eigentliche Containeranwendung/Mutteranwendung eine separate Exe ist, die vom zuerst gestarteten Tabbed Process "nachgestartet" wird falls nicht vorgefunden. Nachfolgend gestartete Instanzen würden als erstes nach einer bereits laufenden Instanz suchen und falls vorhanden, dieser eine Message schicken wie "Hier bin ich, mach mir mal einen kuscheligen Tab auf, wo ich mich rein setzen kann. Hier hast schon mal mein Window-Handle..." Die Mutteranwendung würde dann per FindWindow/SetParent den Nachzügler einfangen und einsortieren. Das gesamte grafische Management würde dann das Betriebssystem automatisch übernehmen, ebenso das Speichermanagement und die Abschottung der Speicherbereiche. Sollte so ein Tabbed Process dann doch mal crashen, könnte ich mittels Tools wie Madexcept innerhalb des Todeskandidaten noch reagieren und der Mutteranwendung eine entsprechende Message schicken.

Multithreaded hätte IMHO einige Nachteile. Einmal müsste ich mich um die ganze UI-Synchronisierung selbst kümmern: Den Thread im aktiven Tab mit der Pinselei beauftragen und die Tabs im Hintergrund von dieser Aufgabe befreien. Zweitens bin ich nicht sicher ob mit einem multithreaded Tabbed-UI eine höhere Absturzsicherheit verbunden wäre. Denn IMHO nimmt ein gecrashter Thread seine Mutteranwendung ja mit in den Tod.

Soweit meine Überlegungen. Was haltet ihr davon?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat