Arno confirmed your message.
I looked at the code.
You are probably right. But I think the cure is to fix XSocketDeallocateHWnd
(in wsocket.pas) so that all other unit using it is fixed at once:
function XSocketDeallocateHWnd(Wnd: HWND): boolean;
begin
SetWindowLong(Wnd, 0, 0); // <== ADDED
Result := DestroyWindow(Wnd);
end;
With this fix, the line "SetWindowLong(FWindowHandle, 0, 0);" can be removed
from DeallocateSocketHWnd:
procedure TCustomWSocket.DeallocateSocketHWnd;
begin
{$IFDEF DELPHI1}
DeallocateHWnd(FWindowHandle);
{$ELSE}
{ Wilfried added check for existing window }
if FWindowHandle = 0 then
Exit;
{ Remove the object reference from the window }
// SetWindowLong(FWindowHandle, 0, 0); <=== REMOVED
{
}
{ if Destructor call's here and it is wrong thread it will not
}
{ so no need to check Thread Id here, it is done in the
eadDetach }
{ method
ndowHandle); }
if XSocketDeallocateHWnd(FWindowHandle) then
FWindowHandle := 0;
{$ENDIF}
end;
Can you verify it works with your test case ?
Thanks !
--
[EMAIL PROTECTED]
http://www.overbyte.be
----- Original Message -----
From: "Fastream Technologies" <[EMAIL PROTECTED]>
To: "ICS support mailing" <[email protected]>
Sent: Saturday, December 24, 2005 8:27 AM
Subject: [twsocket] SOLUTION (POSSIBLE NOFORMS BUG) Cannot create a
hiddenwindows for TWSocket
> Hello FRancois and Arno,
>
> I found a cure for the problem:
>
> SetWindowLong(Handle, 0, 0)); // in both THttpConnection and THttpCli
> descendents' ddestructor
>
> SetWindowLong(FCtrlSocket->Handle, 0, 0); // in THttpCli destructor.
>
> I am using TService, NOFORMS and MT and I am constructing/destructing in
> the
> same listener thread with correct (no errors) thread(de/at)tach BUT UNLESS
> YOU ADD THE ABOVE LINES THAT I BORROWED FROM ICS, APPLICATION CRASHES!
>
> FYI.
>
> SubZero
>
> ----- Original Message -----
> From: "Fastream Technologies" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <[email protected]>
> Sent: Friday, December 23, 2005 8:44 PM
> Subject: Re: [twsocket] Cannot create a hidden windows for TWSocket
>
>
>> The problem persists!!! :((((
>>
>> This load balancer has two sockets per client: one inward and one
>> outward.
>> The destroyHTTPClient is the THttpCli for the web server connection.
>>
>> Regards,
>>
>> SZ
>>
>> ----- Original Message -----
>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>> To: "ICS support mailing" <[email protected]>
>> Sent: Friday, December 23, 2005 7:50 PM
>> Subject: Re: [twsocket] Cannot create a hidden windows for TWSocket
>>
>>
>>> Fastream Technologies wrote:
>>>> The error occurs when the client is disconnected. The problematic
>>>> message
>>>> ID is 1025. Here is the non-ICS code:
>>>>
>>>> void __fastcall httpServerClientClass::TriggerSessionClosed(WORD
>>>> ErrCode)
>>>> {
>>>> if(!FSessionClosedFlag && !serverThread->isTerminated())
>>>> {
>>>> FSessionClosedFlag = true;
>>>>
>>>> if(FServer)
>>>> {
>>>> if(affinityThread)
>>>> {
>>>> destroyHTTPClient();
>>>> ThreadDetach();
>>>>
>>>> PostThreadMessage(serverThread->ThreadID,
>>>> WM_DESTROY_CLIENT, (unsigned int)this, 0);
>>>> }
>>>> }
>>>
>>> What is destroyHTTPClient()?
>>>
>>>>
>>>> and the message handler is (in the listener thread):
>>>>
>>>> case WM_DESTROY_CLIENT:
>>>> {
>>>> httpServerClientClass *client =
>>>> (httpServerClientClass*)(void*)msg.wParam;
>>>> client->ThreadAttach();
>>>> client->Release();
>>>> break;
>>>> }
>>>
>>>
>>>
>>>>
>>>> HTH,
>>>>
>>>> SZ
>>>>
>>>> ----- Original Message -----
>>>> From: "Francois Piette" <[EMAIL PROTECTED]>
>>>> To: <[email protected]>
>>>> Sent: Friday, December 23, 2005 11:35 AM
>>>> Subject: [twsocket] Cannot create a hidden windows for TWSocket
>>>>
>>>>
>>>>>> Ok. The problem when I attach the debugger to the service process
>>>>>> seems
>>>>>> to
>>>>>> be "Cannot create a hidden windows for TWSocket.". Any cure for this?
>>>>>
>>>>> You should try to get windows error number/message to know more.
>>>>> Usually you get this when Windows run out of resources.
>>>>> The error created in XSocketAllocateHWnd. Grab the error number by
>>>>> calling GetLastError. Maybe this
>>>>> error number will tell more.
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>>>
>>>>> --
>>>>> 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
>>
>> --
>> 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
--
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