![]() |
Thread richtig beenden
Was passiert eigentlich (bzw. was muss ich veranlassen, weil es nicht automatisch passiert), wenn die Execute-Methode eines Threads am Ende ist?
Ich möchte das Einscannen von einer Twain-Quelle, das doch eine Weile dauert, in einen extra-Thread verlagern, damit während des Scanvorgangs normal im Programm weitergearbeitet werden kann. Im Thread wird der Scanvorgang gestartet, die nötigen Infos wie Dateiname etc. werden vorher im Hauptthread erfasst und in Variablen der Thread-Instanz gespeichert, dann wird mittels resume der Thread gestartet). Irgendwann ist (hoffentlich) die Execute-Methode des Threads am Ende, das Bild ist eingescannt und abgespeichert. Was muss ich dann noch machen? Geht der Thread dann automatisch in den Status suspended? Und wie starte ich ihn neu? Einfach mit resume? Oder muss ich den Thread entsorgen und für einen neuen Scanvorgang eine neuen Instanz erstellen? |
AW: Thread richtig beenden
IMHO beendet sich der Thread und das wars dann.
Bei ![]() Ansonsten muß natürlich Thread.Free aufgerufen werden, wie bei jedem anderem Objekt auch. Bei ![]() Und ansonsten ![]() Zitat:
Fazit: Der Thread/Execute darf sich nicht beenden. Und wenn fertig, wartet er auf die nächste Arbeit und macht da weiter, was du natürlich selber implementieren mußt, aber dafür gibt es geschätzt 2,5 Millionen Tutorials. Oder neuen Thread erstellen. |
AW: Thread richtig beenden
Der
![]() |
AW: Thread richtig beenden
Hallo!
Klassisch würde ich sagen, Du erzeugst einen Thread beim Programmstart der auf einen Event warten (bis alle Daten da sind) Da setzt Du den Event und der Thread läuft los...Wenn "Er" fertig ist ruft er einen Procedure auf und legt sich wieder schlafen. Da Du ja immer nur ein Dokument gleichzeitig einliest würde ich es so machen... klassisch... Oder eben einen anonymen Thread da der Threadstart ja sicherlich nicht Zeitkritisch ist... Wird der Thread halt jedes mal neu erzeugt... Kommt ein bisschen auf die Delphi-Version an... Mavarik |
AW: Thread richtig beenden
:thumb:
Danke für die Antworten. Jetzt werde ich mich damit wohl ein bisschen spielen müssen :-D @Sir Rufo Mein Delphi 2009 muss esrt noch etwas wachsen. :wink: Aber ich schau es mir an, vielleicht krieg ich die Komponente ja auch mit Delphi 2009 zum Laufen. |
AW: Thread richtig beenden
Ist der Bug eigentlich gefixt, der die Anwendung abschmieren lässt, wenn sie beendet wird, während anonyme Threads noch im Hintergrund werkeln?
|
AW: Thread richtig beenden
Nach meiner Erkenntnis mit dem BackgroundWorker, ja (definitiv XE8)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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