Thema: Delphi Ist der Thread schuld?

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Ist der Thread schuld?

  Alt 14. Okt 2008, 21:53
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."
  Mit Zitat antworten Zitat