![]() |
Thread und Form...
Hallo zusammen,
derzeit Versuche ich ein wenig mit Threads zu Arbeiten und hab folgende Procedure:
Delphi-Quellcode:
Starte ich die Procedure über einen Button, läuft sie Durch.
Procedure tTestForm.TestProcedure (Sender:tObject);
Var i:Integer; Begin; i:=0; repeat; inc(i); Label1.caption:=IntToStr(i) Sleep(100) Until Abbrechen end; Wird diese als Thread gestartet, dann bricht sie bei "Label1.Caption..." mit einer Fehlermeldung ab. Setzte ich dann "tTestform" vor das "Label1.Caption", klappt dies auch im Thread. Kommt dies durch die Auslagerung des Threads? Kann man das auch einfacher umgehen? Hab eine Größere Procedure mit Funktionen und Labels, dessen umschreiben ziemlich mühsam wäre... Danke schonmal! Gruß Torsten |
AW: Thread und Form...
Grundsätzlich wird man doch eigentlich in allen Thread-Tutoials darauf hingewiesen, daß man von einem Thread aus niemals auf VCL-Komponenten zugreifen darf, weil sie eben nicht threadsicher sind.
Lösung: Synchronize Das ist wie überall ... Zugriffe auf gemeinsam genutzte Resourcen müssen irgendwie abgesichert werden. Zitat:
Und es ist immer wieder wunderschön, daß viele ständig das Wichtigste vergessen. Zitat:
Man mag es nicht glauben, aber in diesen Dialogen funktioniert Strg+C und schon hat man die Fehlermeldung als Text im Speicher liegen. |
AW: Thread und Form...
Zitat:
Das ist dann wohl der Fehler. Danke für den Tip. Zitat:
Delphi-Quellcode:
So klappt es.
"Testform.label1.caption:=InToStr(i);
Zitat:
Im Projekt PSM_CAN.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x0055f207: read of address 0x000003d0' aufgetreten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 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