AGB  ·  Datenschutz  ·  Impressum  







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

Form in neuem Thread laufen lassen

Ein Thema von Hobbycoder · begonnen am 17. Apr 2017 · letzter Beitrag vom 27. Jul 2017
Antwort Antwort
Seite 7 von 7   « Erste     567   
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#61

AW: Form in neuem Thread laufen lassen

  Alt 20. Jun 2017, 23:13
Es funktioniert nun mit allen Versionen ab Delphi 7, allerdings musste ich für Delphi 2009 die Benutzung von Generics deaktivieren, da ich dafür keine Zeit investieren wollte. Sprich Generics kommen erst ab Delphi 2010 zum Einsatz. Und auch da waren noch Tricks nötig.

Fazit:
Wer Generics wirklich gut nutzen möchte, sollte sich schon überlegen eine aktuelle Delphiversion zu nutzen. Selbst bei einem so simplen Beispiel stößt man ohne Tricks noch selbst bei XE6 an Grenzen...
@jaenicke: Wow, läßt nun auch in Delphi 2007 kompilieren, habe es gerade ausprobiert. Vielen vielen Dank!

lg,
jus
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#62

AW: Form in neuem Thread laufen lassen

  Alt 20. Jun 2017, 23:20
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...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Purri

Registriert seit: 18. Nov 2010
13 Beiträge
 
Delphi XE5 Professional
 
#63

AW: Form in neuem Thread laufen lassen

  Alt 26. Jul 2017, 15:52
Hallo zusammen,

ich bin auf euer wunderbares Projekt (ein dickes DANKE von mir ) 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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#64

AW: Form in neuem Thread laufen lassen

  Alt 26. Jul 2017, 16:53
- 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.
Dann fehlt in deinen Projektoptionen der Namespace Winapi. Ich schaue mal, dass ich das per IFDEF löse.

- Ich verstehe die Kompilerbedingungen so, das "Delphi2010up" auch von XE5 ausgelöst werden sollte. Das ist, zumindest bei mir, nicht der Fall
Teste ich, muss dafür aber erst eine VM mit XE5 einrichten.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#65

AW: Form in neuem Thread laufen lassen

  Alt 26. Jul 2017, 22:09
Ich habe beides bearbeitet. Wenn du neu auscheckst, sollte das passen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Purri

Registriert seit: 18. Nov 2010
13 Beiträge
 
Delphi XE5 Professional
 
#66

AW: Form in neuem Thread laufen lassen

  Alt 27. Jul 2017, 08:15
Klappt wunderbar. Danke
  Mit Zitat antworten Zitat
Purri

Registriert seit: 18. Nov 2010
13 Beiträge
 
Delphi XE5 Professional
 
#67

AW: Form in neuem Thread laufen lassen

  Alt 27. Jul 2017, 14:58
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 Sleep(5000); 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.

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?

Geändert von Purri (27. Jul 2017 um 15:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#68

AW: Form in neuem Thread laufen lassen

  Alt 27. Jul 2017, 18:01
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 7   « Erste     567   


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 21:08 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