AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Threaded Splash-Screen

Ein Thema von lowmax_5 · begonnen am 8. Aug 2020 · letzter Beitrag vom 8. Aug 2020
Antwort Antwort
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#1

Threaded Splash-Screen

  Alt 8. Aug 2020, 17:14
Hi,
es gab schon diverse Diskussionen zum Thema z.B. https://www.delphipraxis.net/184844-...ashscreen.html. Sowie https://www.delphipraxis.net/165336-...ashscreen.html mit separater Auslagerung als dll. Dieses trifft jedoch nicht exakt das, was ich benötige.

Ich möchte eine animierte Splash (Animation starten - z.B. Video oder Bilderserie anzeigen).
Dann soll ein Codeteil im Hauptthread ausgeführt werden, der unbekannt lange dauern kann. Nach dem Beenden des Hauptthreads soll der Splash dann beendet werden.

Da es Interaktion mit der VCL gibt und kein Zugriff darauf besteht bzw. dieser nicht Threadsave ist, kann der Hauptthread nicht in einen separaten Thread ausgelagert werden. Vielmehr sollte der Splash-Screen im Thread laufen, so dass die Animation während der Wartezeit läuft.

Code:
   StartSplashScreenThread;
  try
    Sleep(10000); // Nicht ThreadSave
  finally
    StopSplashScreenThread;
  end;
Ist das grundsätzlich möglich oder mache ich hier einen Gedankenfehler?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Threaded Splash-Screen

  Alt 8. Aug 2020, 18:41
Geht nicht.
Alles was mit der GUI zu tun hat muss (in der VCL) im Hauptthread erfolgen (bzw. in dem Thread in dem das Windows-GUI-Control erstellt wurde).
Da es schwierig wird eine Formular im Thread zu erstellen und dann *irgendwie* zu verhindern das es globale Objekte (TApplication, ...) zugreift, welche auch Windows-GDI-Ressourcen nutzen wir das fast unmöglich sein zu tun.
Ein DLL hilft dir nur wenn du das laden auch in einem Thread verlagern kannst und damit das dortige Application-Instanz auch im anderen Thread erzeugt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Threaded Splash-Screen

  Alt 8. Aug 2020, 22:09
Wie dort schon erwähnt, kann man NonVCL eine Form in jedem beliebigen Thread erstellen (CreateWindow/CreateDialog) und die kann während der MainThread hängt unabhängig arbeiten.

Bei uns wurde zuletzt im Haupthtread von einer Wait-TForm ein ScreenShot gemacht (intern mit Form.Print) und dieses Bitmap dann auf der NonVCL-Form angezeigt.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz