But TWSocket will swallow the exception, so use this:

 var
     AFlag:Boolean

 procedure TForm.WSocketDataAvailable(Sender: TObject; ErrCode: Word);
 begin
   try
     if AFlag then
         raise Exception.Create('reentered');
     AFlag := TRUE;
     try
         [..]
     finally
         AFlag : FALSE
     end;
   except
     on E: Exception do
       ShowMessage(E.Message); // or WriteLn or add to Memo or whatever
   end;
 end;

---
Rgds, Wilfried [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html
http://www.mestdagh.biz

Friday, September 1, 2006, 08:15, Arno Garrels wrote:

> Markus Humm wrote:

>> I don't call processmessages and the like directly in the event but
>> might output some lines on screen for debugging.

> How? ShowMessage is a modal form.  

>> 
>> Other thing: what about critical sections. Would they be safe for
>> preventing this in my situation?

> No, critical sections would be working only when they are used
> from multiple threads.

> You could try something like below, is the exception raised?

> var
>     AFlag:Boolean

> procedure TForm.WSocketDataAvailable(Sender: TObject; ErrCode: Word);
> begin
>     if AFlag then
>         raise Exception.Create('reentered');
>     AFlag := TRUE;
>     try
>         [..]
>     finally
>         AFlag : FALSE
>     end;
> end;


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

 
>> Greetings
>> 
>> Markus

-- 
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