![]() |
AW: Form in neuem Thread laufen lassen
Zitat:
lg, jus |
AW: Form in neuem Thread laufen lassen
Gerne ;-)
Im Moment habe ich z.B. das Problem, dass bei dynamischer Erzeugung die Komponenten erst sichtbar werden, wenn ich mit der Maus drüber gehe oder z.B. der Fortschritt der Progressbar geändert wird. Wenn da jemand eine Idee hätte... ;-) |
AW: Form in neuem Thread laufen lassen
Hallo zusammen,
ich bin auf euer wunderbares Projekt (ein dickes DANKE von mir :-D) gestoßen, weil ich eine Möglichkeit suche eine Aktivitätsanzeige einzublenden, auch wenn im Hauptthread Stillstand herrscht. Ich habe hier zum Teil größere Datenbankoperationen, die ich leider nicht in eigene Threads auslagern kann. Nun schaue ich mir grade die Demo an und bin dabei auf folgendes gestoßen: - Unter XE5 kompiliert bei mir keine Datei ( Konnte ich lösen, indem ich bei den Uses "Winapi." vor "Windows" und "Messages" geschrieben habe. Meiner Meinung nach sollte es in XE5 aber auch ohne "Winapi" funktionieren, kann also mein Fehler sein. - Ich verstehe die Kompilerbedingungen so, das "Delphi2010up" auch von XE5 ausgelöst werden sollte. Das ist, zumindest bei mir, nicht der Fall. Grüße Jan |
AW: Form in neuem Thread laufen lassen
Zitat:
Zitat:
|
AW: Form in neuem Thread laufen lassen
Ich habe beides bearbeitet. Wenn du neu auscheckst, sollte das passen.
|
AW: Form in neuem Thread laufen lassen
Klappt wunderbar. Danke :-D
|
AW: Form in neuem Thread laufen lassen
Nochmal ich :?
Eigentlich sollte n der Thread und sein Fenster doch weiterarbeiten, wenn der Hauptthread steht, oder? Ich habe in der Demo testweise auf dem Hautpformular einen Button mit einem
Delphi-Quellcode:
eingebaut. Wenn ich dies ausführe, während der Thread läuft, bleiben Thread und Threadfenster stehen. Interessanterweise aber nicht sofort: Die "j-Schleife" läuft immer noch zu Ende durch. :wiejetzt:
Sleep(5000);
Kann mir einer von euch erklären, was hier passiert:?: Edit: Ein Sleep im Hauptthread hält natürlich alles an, aber warum läuft die "j-Schleife" dann weiter? |
AW: Form in neuem Thread laufen lassen
Weil die innere Schleife die Fortschrittsanzeige nicht aktualisiert und deshalb keine Messages braucht.
So ist das auch nicht gedacht. Gedacht ist das so, dass du einen eigenen Thread hast, der die Verarbeitung durchführt und die GUI ansteuert. Innerhalb der GUI-Events sollte nichts passieren außer den Aufruf an den Verarbeitungsthread weiterzugeben. Dieser separate Thread kann dann auch problemlos Sleep aufrufen. Hintergrund ist, dass auch die Messages für die einzelnen Fenster in der Main-Messageloop ankommen und diese so blockiert, wenn eine Messagebehandlung (wie für den Knopfdruck) länger dauert. Vielleicht lässt sich das auch noch sauberer trennen. Freiwillige vor. ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz