Hi,
Delphi-Quellcode:
procedure TCellThread.Execute;
begin
repeat
Synchronize(DoCalculate);
Synchronize(FAutomaton.Paint);
inc(FAutomaton.FGen);
until Terminated;
end;
Während dieser Thread seine Arbeit verrichtet (Ist jetzt erstmal egal was er genau tut), taucht nach kurzer Zeit folgendes Phänomen auf:
Ich erhalte bei einem einfachen Lesezugriff auf eine Variable eines Objekts eine Zugriffsverletzung:
Zitat:
---------------------------
Debugger
Exception Notification
---------------------------
Project Project1.exe raised
exception class EAccessViolation with message '
Access violation at address 0044F989 in module 'Project1.exe'. Write of address 00000044'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Das sieht ganz danch aus, als würde das Objekt nichtmehr existieren, bzw als wäre der Self-Pointer verbogen.
Sowas kann imo durch Threads passieren. Aber ich Synchronisiere doch alles. Warum passiert sowas? (es passiert übrigens auch wenn ich
inc(FAutomaton.FGen);
auskommentiere.
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."