Don't jump! Your code below looks correct. Instead try the same
with standard TTabsheet/TPageControl in the original ThrdSrv demo.
Does that work?

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

Gary Stafford wrote:
> I posted a message the other day about how I have a problem using
> tPageControl and adding tTabSheets at runtime.
> 
> 
> 
> I'm really just looking for some idea's because I'm stumped.
> 
> 
> 
> My program uses a modified version of the ThrdSrv demo
> 
> 
> 
> My program is hanging  in:-
> 
> 
> 
> procedure TCustomWSocket.DeleteBufferedData;
> 
> var
> 
>     nItem : Integer;
> 
> begin
> 
> {$IFDEF COMPILER2_UP}                                       { v5.25 }
> 
>     EnterCriticalSection(GSendBufCritSect);            This line
> hangs the program after leaving
> TTcpSrvForm.WSocketServer1ClientDisconnect 
> 
> 
> 
> If I don't add the following code to add and remove the tTabSheets it
> works fine. Done in main thread.
> 
> 
> 
> procedure TTcpSrvForm.WSocketServer1ClientConnect(Sender:TObject;
> Client:TWSocketClient; Error:Word);
> 
> begin
> 
>   Try
> 
>    
> tThrdSrvClient(Client).TabSheet:=tClientConnectTabSheet.Create(Self); 
> 
>     tThrdSrvClient(Client).TabSheet.AdvPageControl:=PageControl1;
> 
> 
> 
> 
>       *****This sometimes hangs the program when the second client
> connects. After leaving WSocketServer1ClientConnect in
> client.Free****** 
> 
>   Finally
> 
>   End;
> 
>   with Client as TThrdSrvClient do
> 
>   begin
> 
>     Display('Client connected.' +
> 
>             ' Remote: '     + PeerAddr + '/' + PeerPort +
> 
>             ' Local: '      + GetXAddr + '/' + GetXPort +
> 
>             ' ThreadID : $' + IntToHex(ClientThread.ThreadID, 8));
> 
>     LineMode            := False;
> 
>     LineEdit            := False;
> 
>     LineLimit           := 80; { Do not accept long lines }
> 
>     OnDataAvailable     := ClientDataAvailable;
> 
>     OnLineLimitExceeded := ClientLineLimitExceeded;
> 
>     OnBgException       := ClientBgException;
> 
>     ConnectTime         := Now;
> 
>   end;
> 
> end;
> 
> 
> 
> procedure TTcpSrvForm.WSocketServer1ClientDisconnect(Sender:TObject;
> Client:TWSocketClient; Error:Word);
> 
> begin
> 
>   tAdvTabSheet(tThrdSrvClient(Client).TabSheet).AdvPageControl:=Nil;
> 
> 
> 
>   With tThrdSrvClient(Client) Do
> 
>     Display('Client disconnecting: '+PeerAddr+'   '+'Duration: '+
> 
>       FormatDateTime('hh:nn:ss',Now-ConnectTime)+' ThreadID : $' +
> IntToHex(GetCurrentThreadID, 8));
> 
>   { Clear WSocket reference in worker thread }
> 
>   { ClientThread.WSocket := nil;             }
> 
>   { Break message pump within worker thread  }
> 
>   PostThreadMessage(tThrdSrvClient(Client).ClientThread.ThreadID,
> WM_QUIT, 0, 0);
> 
>   { Allow up to 10 second for thread termination }
> 
>   WaitForSingleObject(tThrdSrvClient(Client).ClientThread.Handle,
> 10000); 
> 
> end;
> 
> 
> 
> This always hangs the program in:-
> 
> 
> 
> procedure TCustomWSocket.DeleteBufferedData;
> 
> var
> 
>     nItem : Integer;
> 
> begin
> 
> {$IFDEF COMPILER2_UP}                                       { v5.25 }
> 
>     EnterCriticalSection(GSendBufCritSect);            This line
> hangs the program after leaving
> TTcpSrvForm.WSocketServer1ClientDisconnect 
> 
> 
> 
> 
> 
> Any help would be welcomed before I jump out of the window which is a
> shame as it's a lovely day.
> 
> 
> 
> Thanks in advance
> 
> 
> 
> Gary
-- 
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