Already got it! It is as I wrote in my previous mail...

procedure TWSocketClient.TriggerSessionClosed(ErrCode : Word);
begin
    if not FSessionClosedFlag then begin
        FSessionClosedFlag := TRUE;
        if Assigned(FServer) then
            PostMessage(Server.Handle, Server.FMsg_WM_CLIENT_CLOSED, ErrCode,
                        {$IFDEF CLR}
                        Integer(IntPtr(Self.HandleGc)));
                        {$ENDIF}
                        {$IFDEF WIN32}
                        LongInt(Self));
                        {$ENDIF}
        inherited TriggerSessionClosed(ErrCode);
    end;
end;

A getter that automatically allocates a new window handle is a bad solution!
 


Francois Piette wrote:
> For debugging purpose, do this:
> 
> Create a global public variable in wndcontrol, initialize it to false.
>> From your thread exceute, just after threaddetach, set it to true.
>> From the routine where the window handle is allocated (I haven't the
>> code 
> here, I do from my head), add this:
> if MyGlobalVar then
>     OutputDebugString('Got it');
> Then place a breakpoint on the OutputDebugString line and run your
> program. When (if) the breakpoint is hit, have a look at the stack
> trace to understand where it comes from.
> 
> 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: "Arno Garrels" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <twsocket@elists.org>
> Sent: Thursday, June 22, 2006 9:37 PM
> Subject: Re: [twsocket] V6 ThreadDetach #2
> 
> 
>> Arno Garrels wrote:
>>> Francois PIETTE wrote:
>>>>> Not sure what you mean. The problem is that even if you call
>>>>> ThreadDetach (which is to make the component windowless) you
>>>>> cannot be sure that the component will not allocate another
>>>>> window handle somewhere in the background
>>>>> after that call to ThreadDetach.
>>>> 
>>>> I don't see how the component would create another window handle
>>>> once ThreadDetach has been called: no event will be generated
>>>> anymore. Only the currently executing event will continue
>>>> execution ans far as memory serve me well, no event recreate a
>>>> window handle. 
>> 
>> Typo, sorry!
>> 
>> Correction:
>> 
>> If so, why do I get this exception? ThreadDetach is executed and
>> property Handle is set to zero. Nevertheless the exeption is raised.
>> So a window handle must have been allocated after the call to
>> ThreadDetach somewhere. Please tell me what might be wrong with the
>> very simple code I posted before. There's no deadlock, sure.
>> Especially not if you exchange WaitFor by WaitForSingleObject. Also,
>> as far as I can see entire methode ThreadDetach is blocking, so the
>> thread shouldn't signal before the window handle was set to zero,
>> right? --
>> 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