Ok I changed strategy and creating components dynamicly for every
connection. Everything works great but still cant implement timeout.
.. why would i need timeout? Because at the end some Clients arent
destroyed because connections are still alive waiting for some data.
HTTPCliList is TObjectList
----------------
In Timer1 i got:
----------------
while (httpcli_count < 50) and (memo3.Lines.Count>0) do
begin
if memo3.Lines.Count > 0 then
begin
utworzono:=utworzono+1;
http:=THttpCli.Create(self);
http.FollowRelocation := false;
http.NoCache := true;
http.OnDocData := HTTPCli2.OnDocData;
http.OnSessionConnected := HTTPCli2.OnSessionConnected;
http.OnRequestDone := HTTPCli2.OnRequestDone;
http.OnSocksError := HTTPCli2.OnSocksError;
http.RcvdStream:=TMemoryStream.Create;
http.url := 'http://google.pl';
http.Tag := (GetTickCount div 1000) mod 1000;
HTTPCliList.Add(http);
SetProxy(http);
http.GetASync;
end;
end;
-----------------
On OnRequestDone:
-----------------
<some code that works fine>
THTTPCli(Sender).Tag := -1;
-----------------
In Timer2:
-----------------
for i:=HTTPCliList.Count - 1 downto 0 do
begin
todestroy:=THTTPCLI(HTTPCLILIST[i]);
if abs(noww-THTTPCLI(HTTPCLILIST[i]).Tag) > 30 then
THTTPCLI(HTTPCLILIST[i]).CloseAsync;
if todestroy.Tag = -1 then
begin
HTTPCliList.Delete(i);
todestroy.Destroy;
httpcli_count:=httpcli_count-1;
end;
end;
end;
-------------------
Whats wrong? Why do i get access violation? If ill add the code from
timer2:
HTTPCliList.Delete(HTTPCliList.IndexOf(HTTPCLI(SENDER));
HTTPCLI(SENDER).Destroy;
httpcli_count:=httpcli_count-1;
... directly in OnRequestDone event, still getting Access Violation.
But without any Timer2 and HTTPCliList everything works fine (but no
timeout then).
Ann
--
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