> Do I need to do any other things to make it work right?

Looks OK, except destruction of the component which must be done in the
context of the creating thread, so at the end of your execute method. Use
try/finally.

Contribute to the SSL Effort. Visit http://www.overbyte.be/eng/ssl.html
--
[EMAIL PROTECTED]
Author of ICS (Internet Component Suite, freeware)
Author of MidWare (Multi-tier framework, freeware)
http://www.overbyte.be

----- Original Message ----- 
From: "Éric Fleming Bonilha" <[EMAIL PROTECTED]>
To: "ICS support mailing" <twsocket@elists.org>
Sent: Thursday, April 05, 2007 4:23 PM
Subject: [twsocket] Threading question


> Hello!
>
> I have a client application that should connect to different servers at
the same time but for each connection it may have very lengthy operations so
I decided to used one thread per connection, but I´m writting this email
just to be sure that I´m doing the right thing
>
> Basically I have a thread class that have an internal socket component:
>
>   TDriverCommSocketThread = class(TDigiThread)
>   private
>
>     // Connection socket
>     FSocket: TWSocket;
>
> and this is my execute method
>
> TDriverCommSocketThread.Execute;
> begin
>
>   // Creates the socket
>   FSocket                    := TWSocket.Create(nil);
>   FSocket.MultiThreaded      := TRUE;
>   FSocket.OnSessionConnected := HandleOnSocketConnected;
>   FSocket.OnSessionClosed    := HandleOnSocketClosed;
>   FSocket.OnDataAvailable    := HandleOnSocketDataAvailable;
>   FSocket.OnError            := HandleOnSocketError;
>   FSocket.OnBgException      := HandleOnSocketException;
>   FSocket.Connect;
>
>   // Message Loop
>   while GetMessage(MsgRec, 0, 0, 0) do
>   begin
>
>     if not Terminated then
>     begin
>
>       // Process the received messages
>       TranslateMessage(MsgRec);
>       DispatchMessage(MsgRec)
>
>     end;
>
>   end;
>
> end;
>
> Doing this, all events like OnSessionConnected, OnSessionClosed,
OnDataAvailable, OnError and OnBgException will be triggered within my
message loop, consequently it will be triggered on the thread´s context
right?
>
> Do I need to do any other things to make it work right? Now it is working
great, but I´m having some problems that I don´t know if it is related to
this multi-threaded scenario, because of that I´m asking if I´m doing the
right thing..
>
> Another thing, now FSocket is being destroyed on my class destructor,
should I destroy it on the end of the execute method, after leaving the
message loop?
>
> Thanks a lot!
> Éric Fleming Bonilha
> -- 
> To unsubscribe or change your settings for TWSocket mailing list
> please goto http://www.elists.org/mailman/listinfo/twsocket
> Visit our website at http://www.overbyte.be
>

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to