So schaut mein Thread (gekürzt) aus:
Delphi-Quellcode:
constructor TNames_thread.Create(const MainWindowHandle : Thandle);
begin
inherited create(True); // CreateSuspended = true
FMainHandle := MainWindowHandle;
FreeOnTerminate := False;
end;
procedure TNames_thread.Execute();
var
Msg : TMsg;
List: TList;
len : Integer;
begin
while (not Terminated) do
begin
List := All_Names.Locklist;
try
len := List.Count;
finally
All_Names.Unlocklist;
end;
Sleep(1000);
end; // while (not Terminated) do
Terminate;
end;
Wenn der Thread nun das Locklist aufruft steht er!?
Das ist bei beiden Threads gleich.
Der was geht hat ja die OnUDPRead vom UDP Server und diese Funktion wird von einem andern Thread (TIdUDPListenerThread) ausgeführt. Dann kann das Locklist durchgeführt werden.
Die All_Names Liste wird in der Mainform in der OnCreate erzeugt.
EDIT:
Fehler gefunden!
Ich habe in der OnCreate im MainThread zuerst ein All_Names.Locklist.clear ausgeführt. danach aber kein Unlock!
Jetzt geht's!