![]() |
Multithreading Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
eigentlich will ich was ganz einfaches machen, aber irgendwie blick' ich's noch nicht. Im Anhang ist ein Demo Projekt. Es besteht aus einem Hauptformular und einem kleinen Fortschrittsanzeige Formular. Klickt man im hauptformular den Button an, soll das Fortschrittsformular angezeigt werden und in einem Task etwas bearbeitet werden (hier durch eine Schleife mit einem Sleep drin simuliert). Der Fortschritt soll im Fortschrittsdialog angezeigt werden. Mir ist klar, dass ich die GUI Anzeige Synchronisieren muss weil es sonst knallt. So wie's jetzt läuft, scheinen alle diese Thread.Queue Aufrufe aber erst nach vollständiger AUsführung der Hintergrund Aktion aufgerufen zu werden... Hat jemand eine Idee? Grüße TurboMagic |
AW: Multithreading Problem
Habe nur kurz in deinen Code geschaut, aber der scheint hier zu hängen:
Delphi-Quellcode:
Das willst du doch gar nicht !?
Task.Wait;
|
AW: Multithreading Problem
Zitat:
Als ergänzende Lektüre empfehle ich dir meinen Artikel ![]() |
AW: Multithreading Problem
Zitat:
Allerdings crasht das Programm beim Beenden, wenn man den Progress-Dialog abbricht. Da versucht dann ein OnProgress aus der Queue auf die nicht mehr existierende Progressbar zu schreiben. Genau solche Probleme werden auch in meinem Artikel behandelt. Eine gute Empfehlung für eine tiefergreifende Lektüre ist übrigens das Buch ![]() |
AW: Multithreading Problem
Hallo,
danke für die Infos, ja, das Wait war das Problem. Das mit dem Cancel is tmir durchaus bewußt, in dem Programmteil wird's den Cancel Button aber nicht geben. Grüße TurboMagic |
AW: Multithreading Problem
Cancel Funktionen die Hintergrundprozesse abbrechen können sind aber durchaus sinnvoll.
Nur muss man sich überlegen wie man das umsetzt. Der Task sollte ein Signal erhalten und ein weiteres Signal liefern wenn er fertig ist mit abbrechen. Anschließend geht ein Programm dann auch zu ohne das es mit Nullpointern um sich wirft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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