Still one problem. Arno fixed it (He sent a private message to me). Move the line FWndHandler := nil; // THIS ONE ADDED from ThreadDetach to DeallocateHWnd so that the later looks like: procedure TIcsWndControl.DeallocateHWnd; begin if FHandle = 0 then Exit; // Already done
GWndHandlerPool.Lock; try FreeMsgHandlers; if Assigned(FWndHandler) and (FWndHandler.FMsgCnt <= 0) then GWndHandlerPool.FreeWndHandler(FWndHandler); FHandle := 0; FWndHandler := nil; // THIS ONE ADDED finally GWndHandlerPool.UnLock; end; end; Thank to Arno. -- Contribute to the SSL Effort. Visit http://www.overbyte.be/eng/ssl.html -- [EMAIL PROTECTED] http://www.overbyte.be ----- Original Message ----- From: "Francois PIETTE" <[EMAIL PROTECTED]> To: "ICS support mailing" <twsocket@elists.org> Sent: Monday, June 05, 2006 1:11 PM Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem > Problem fixed ! > > In OverbyteIcsHttpProt.pas, add: > > {$IFDEF COMPILER2_UP} > procedure THttpCli.ThreadAttach; > begin > inherited ThreadAttach; > FCtrlSocket.ThreadAttach; > end; > > procedure THttpCli.ThreadDetach; > begin > inherited ThreadDetach; > FCtrlSocket.ThreadDetach; > end; > {$ENDIF} > > Don't forget to add the declarations in the public section. > > In OverbyteIcsWndControl, add a line in ThreadDetach so that it looks > like: > procedure TIcsWndControl.ThreadDetach; > begin > if GetCurrentThreadID <> FThreadID then > raise EIcsException.Create('Cannot detach from another thread'); > Self.DeallocateHWnd; > FWndHandler := nil; // THIS ONE ADDED > end; > > > In OverbyteIcsWSocket.pas, delete the declaration of > TCustomWSocket.FThreadID. > > That's it. > Should work. At least it work in my small test prog: > Create a form, drop a TButton, a TMemo and a THttpCli. Add the following > code: > > unit OverbyteIcsSimpleThread1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, > Forms, > Dialogs, StdCtrls, OverbyteIcsWndControl, OverbyteIcsWSocket, > OverbyteIcsHttpProt; > > type > TWorkerThread = class(TThread) > public > FHttpCli : THttpCli; > procedure HttpCliRequestDone(Sender : TObject; RqType: THttpRequest; > ErrCode : Word); > procedure Execute; override; > procedure ShowDoc; > end; > > TForm1 = class(TForm) > HttpCli1: THttpCli; > DoButton: TButton; > Memo1: TMemo; > procedure DoButtonClick(Sender: TObject); > private > FWorkerThread : TWorkerThread; > end; > > var > Form1: TForm1; > > implementation > > {$R *.dfm} > > procedure TWorkerThread.Execute; > begin > FHttpCli.ThreadAttach; > FHttpCli.MultiThreaded := TRUE; > FHttpCli.URL := 'http://localhost'; > FHttpCli.RcvdStream := TMemoryStream.Create; > FHttpCli.OnRequestDone := HttpCliRequestDone; > FHttpCli.GetASync; > FHttpCli.MessageLoop; > FHttpCli.ThreadDetach; > FHttpCli.MultiThreaded := FALSE; > end; > > procedure TWorkerThread.HttpCliRequestDone(Sender : TObject; RqType: > THttpRequest; ErrCode : Word); > begin > FHttpCli.RcvdStream.Seek(0, 0); > Synchronize(ShowDoc); > FHttpCli.RcvdStream.Free; > FHttpCli.RcvdStream := nil; > PostMessage(FHttpCli.Handle, WM_QUIT, 0, 0); > end; > > procedure TWorkerThread.ShowDoc; > begin > Form1.Memo1.Lines.LoadFromStream(FHttpCli.RcvdStream); > end; > > procedure TForm1.DoButtonClick(Sender: TObject); > begin > HttpCli1.ThreadDetach; > FWorkerThread := TWorkerThread.Create(TRUE); > FWorkerThread.FreeOnTerminate := TRUE; > FWorkerThread.FHttpCli := HttpCli1; > FWorkerThread.Resume; > end; > > end. > -- > [EMAIL PROTECTED] > http://www.overbyte.be > > > > ----- Original Message ----- > From: "Francois PIETTE" <[EMAIL PROTECTED]> > To: "ICS support mailing" <twsocket@elists.org> > Sent: Monday, June 05, 2006 12:25 PM > Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem > > >> Yes, I found the problem. More complex to solve than what I thought >> first. >> >> -- >> [EMAIL PROTECTED] >> http://www.overbyte.be >> >> ----- Original Message ----- >> From: "Fastream Technologies" <[EMAIL PROTECTED]> >> To: "ICS support mailing" <twsocket@elists.org> >> Sent: Monday, June 05, 2006 11:37 AM >> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem >> >> >>> Francois, >>> >>> Have you been able to reproduce the problem there? >>> >>> Regards, >>> >>> SZ >>> >>> ----- Original Message ----- >>> From: "Fastream Technologies" <[EMAIL PROTECTED]> >>> To: "ICS support mailing" <twsocket@elists.org> >>> Sent: Sunday, June 04, 2006 6:24 PM >>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem >>> >>> >>>> AFAIU, instead of FWindowHandle being defined as window, we now have >>>> the >>>> entire hierarchy being derived from a Twndcontrol which pools and >>>> shares >>>> the >>>> windows. But I am clueless in terms of this bug as well. I sent a >>>> private >>>> email to Francois asking for consultancy about this. >>>> >>>> Thanks anyway, >>>> >>>> SZ >>>> >>>> ----- Original Message ----- >>>> From: "Arno Garrels" <[EMAIL PROTECTED]> >>>> To: "ICS support mailing" <twsocket@elists.org> >>>> Sent: Sunday, June 04, 2006 6:06 PM >>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem >>>> >>>> >>>>> Fastream Technologies wrote: >>>>>> Nothing changes. This is my second answer to this question as >>>>>> sometimes my email server gets swamped :(... >>>>>> >>>>>> I still get the exception even though the package compiles with no >>>>>> errors. >>>>> >>>>> Looks like a bit more complicated. Francois probably knows better how >>>>> to fix it, I still haven't fully got the logic of the new version, >>>>> sorry. >>>>> >>>>>> >>>>>> Regards, >>>>>> >>>>>> SZ >>>>>> >>>>>> ----- Original Message ----- >>>>>> From: "Arno Garrels" <[EMAIL PROTECTED]> >>>>>> To: "ICS support mailing" <twsocket@elists.org> >>>>>> Sent: Sunday, June 04, 2006 5:31 PM >>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem >>>>>> >>>>>> >>>>>>> Fastream Technologies wrote: >>>>>>>> It is used here: >>>>>>> >>>>>>> Yes I know, but what happens? As Francois already supposed it >>>>>>> is in fact redefined and never assigned in TCustomWSocket. >>>>>>> >>>>>>> >>>>>>> --- >>>>>>> Arno Garrels [TeamICS] >>>>>>> http://www.overbyte.be/eng/overbyte/teamics.html >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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 > > -- > 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