info2004 wrote:
> Francois, and Arno,
> 
>>> while not terminated do
>>>  begin
>>>  WSocket.MessagePump;
>>>  // check if I need to do something
>>>  sleep(100);
>>>  end;
>>> // close it all down
>>> Or am I missing the point in the use of the message pump?
>> 
>> Yes, you miss something. The code you've done will be very slow at
>> processing events because of the sleep. And it you remove the sleep,
>> it will use all CPU.
> OK.
>> 
>> The solution is simple: you need to use a real message loop. Easy:
>> just call MessageLoop which all TWSocket instances have. To
>> terminate the message loop, you can post a WM_QUIT message when you
>> detect your thread has terminated.
> 
> If I do:
> while not terminated do
>  begin
>  WSocket.MessageLoop;
>  // check if I need to do something
>  end;
> // close it all down
> 
> Then my understanding from what you have said is that I only get to
> the // check if I need to do something
> 
> when a quit is posted.
> 
> I am running a finite state machine in the execute loop, which
> marshalls responses, checks timeouts etc. If I don't exit the message
> loop, I can't do this. 

1) Rely on WSocket events, control program flow from the various
event handlers. 

2) In order to control your thread or anything else you can use 
your own custom messages (WM_USER + n) and run your own custom
message loop, here's an example:

procedure MyMessageLoop;
var
    Msg : TMsg;
begin
    while GetMessage(Msg, 0, 0, 0) do
    begin
        if Msg.hwnd = 0 then
        // Messages posted with PostThreadMessage() go here, 
        // their Hwnd equals zero. 
        begin
            case Msg.message of
                WM_CUSTOM_MESSAGE_1: DoSomething1;
                WM_CUSTOM_MESSAGE_2: DoSomething2;
            else
                TranslateMessage(Msg);
                DispatchMessage(Msg);
            end;
        end
        else begin
            TranslateMessage(Msg);
            DispatchMessage(Msg);
        end;
    end;
end;

--
Arno Garrels [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html


 

 
> Really sorry if I am missing the point on this. Long hours, fried
> brain. 
> 
> Regards,
> 
> Andy
>> 
>> --
>> [EMAIL PROTECTED]
>> The author of the freeware multi-tier middleware MidWare
>> The author of the freeware Internet Component Suite (ICS)
>> http://www.overbyte.be
-- 
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