Thema: Delphi Thread in Objekt starten

Einzelnen Beitrag anzeigen

Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

Thread in Objekt starten

  Alt 27. Jul 2008, 17:40
Hallo zusammen,

ich spiele im Moment ein bisschen mit den Sockets rum, die ich via WinAPI anspreche. Ich habe mir eine Klasse geschrieben, die die Serverfunktionalität kapseln soll. Bisher habe ich ein Objekt der Klasse in einem Thread erzeugt, der somit beschäftigt war Daten zu empfangen. Der Code hat dabei wunderbar funktioniert. Nun möchte ich aber innerhalb dieses Objekts einen Thread starten, der sich um das Empfangen der Nachrichten kümmert. Ziel ist, dass man so ein Objekt der Klasse dann auch "parallel" zum senden nutzen können soll.

Ich bin dann einfach so vorgegangen, dass ich eine Methode hinzugefügt habe die das Empfangen starten soll. Diese ezeugt einen Thread, der wiederum die bisherige Methode zum empfangen aufruft. Ich bin also vorgegangen wie es Sir Thornberry hier vorgeschlagen hat: http://www.delphipraxis.net/internal...=758329#758329

Bei mir sieht das ganze so aus:
Delphi-Quellcode:
procedure TMyTCPServer.BindServer(Port: Integer);
begin
...
  FListenThreadHandle := BeginThread(nil, 0, @MyTCPServerListenThread, Self, 0, FListenThreadId);
...
end;

function MyTCPServerListenThread(Param: Pointer): Integer;
begin
  TMyTCPServer(Param).ListenThread;
  Result := 0;
end;
...
Mein Problem: Mir fliegt nun dauernd das Programm innerhalb von ListenThread um die Ohren und ich kann nicht wirklich ausmachen warum. ListenThread wurde bisher einfach direkt aufgerufen und wurde nicht verändert. Mir ist bewusst, dass ich im Unterschied zu vorher schreibende Zugriffe auf Variablen des Objekts synchronisieren müsste aber diese finden gar nicht statt.

Ich gehe daher davon aus, das etwas mit dem Threadkram nicht stimmt... nur was?

Gruß Mr_G
Jan
  Mit Zitat antworten Zitat