AndreasGMail wrote:
> I am writing a DLL that will have two sockets managed by the same
> thread. In the thread's Execute method I am calling the message pump
> from one of the sockets.
> 
> My question: will this message pump also handle the messages of the
> second socket?

Yes it will, however your code doesn't work, you must call ThreadDetach in 
TWSocket's current thread context. Or simply create and destroy the
objects in method Execute.  

-- 

Arno Garrels

> 
> For reference (and so others can check for errors), here is the
> thread's constructor, destructor and Execute method:
> 
> //
> ----------------------------------------------------------------------------
> constructor TTicketThrd.Create(IP: AnsiString; Handle: THandle; ID:
> integer);
> begin
>     myIP := IP;
>     fHandle := Handle;
>     fID := ID;
> 
>     TcpSocket := TWSocket.Create(Nil);
>     with TcpSocket do
>         OnDataAvailable = TcpDataAvailable;
>         OnSessionClosed = TcpDisconnected;
>         OnSessionConnected = TcpConnected;
>     end;
> 
>     UdpSocket := TWSocket.Create(Nil);
>     UdpSocket.OnDataAvailable := UdpDataAvailable;
> 
>     FreeOnTerminate := TRUE;
>     inherited Create(false);
> end;
> 
> destructor TTicketThrd.Destroy;
> begin
>     FreeAndNil(TcpSocket);
>     FreeAndNil(UdpSocket);
> end;
> 
> procedure TTicketThrd.Execute;
> begin
>     with TcpSocket do
>     begin
>         ThreadDetach();
>         MultiThreaded := true;
>         ThreadAttach();
>     end;
>     with UdpSocket do
>     begin
>         ThreadDetach();
>         MultiThreaded := true;
>         ThreadAttach();
>     end;
>     Sleep(0);
> 
>     TcpSocket.MessageLoop();
> 
>     Sleep(0);
>     UdpSocket.ThreadDetach;
>     TcpSocket.ThreadDetach;
> end;
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to