![]() |
Thread stürzt bei Änderung ab?
Moin!
Ich habe einen Thread programmiert, in dem ein Timecode läuft und der zu einem gewissen Timecode ein Ereignis auslöst. Die Timecodes, zu denen ein Ereignis ausgelöst werden soll, sind in einem Array gespeichert.
Delphi-Quellcode:
(Code gekürzt)TTimecode = Integer; [...] procedure TTimeThread.Execute; var lI: Integer; begin inherited; while not Terminated do begin // Timecode aktualisieren [...] // Wenn kein Editiervorgang am laufen ist if not Self.EditSteps then begin // Step auslösen? if Length(Steps) > 0 then for lI := 0 to Length(Steps) - 1 do if (Steps[lI] >= prevTimecode) and (Steps[lI] < Timecode) then if Assigned(OnStep) then OnStep(Timecode); end; [...] // Auflösung einhalten Sleep(Resolution); end; end; Dabei wird Timecode.Steps verändert, davor wird der Thread allerdings "Suspendiert" und danach wieder Resumed. Dennoch stürzt der Thread ab, und zwar mit einem Zugriffsfehler (5). Das ganze passiert nicht auf meinem PC, sondern auf einem alten 233MhZ Laptop, auf dem ich nicht debuggen kann. Kann jemand von euch sehen / aus Erfahrung raten wo das Problem verborgen liegt? Gruß |
Re: Thread stürzt bei Änderung ab?
*push*
Ich bekomme "Thread-Fehler: Zugriff verweigert (5)" - Dazu findet nichtmal Google was... |
Re: Thread stürzt bei Änderung ab?
Möglicherweise tritt die Exception im Eventhandler von OnStep auf. Ich tippe auf einen Dateizugriff im Eventhandler.
Auf Verdacht mal probieren.
Delphi-Quellcode:
Sonst bitte mehr Quellcode zeigen.
try
if Assigned(OnStep) then OnStep(Timecode); except raise Exception.Create('Tada!'); end; |
Re: Thread stürzt bei Änderung ab?
Moin!
D.h. Events können auch dem Thread selber Probleme machen? Gruß |
Re: Thread stürzt bei Änderung ab?
Events können immer Probleme machen wenn in dem Eventhandler fehler vorhanden sind. Das hat nix damit zu tun das du aus dem Thread heraus das auslöst.
|
Re: Thread stürzt bei Änderung ab?
Moin!
Okay, d.h. ich werde einfach mal alle Fehler abfangen, die mir in meinem Thread irgendwie über den Weg laufen könnten. Was ich ansonsten gestern noch gemacht habe ist das ganze richtig Thread-Safe gemacht. Ich hatte das davor etwas "eigen" gelöst, dank Florian's Hilfe mach ich das jetzt mit CriticalSections. Sobald ich das alles mal auf dem 233'er getestet hab', geb' ich bescheid. Danke & Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 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