Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#13

AW: Multithreading und Globale Funktionen

  Alt 9. Jan 2011, 19:00
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!
Delphi 2010, Update 4 & 5

Geändert von schwa226 ( 9. Jan 2011 um 19:43 Uhr)
  Mit Zitat antworten Zitat