Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[14157] 쓰레드안에서 idHttp 동적생성시 오류
lsoap [] 4122 읽음    2012-03-06 15:16
델파이7과 Indy10 의 idHttp를 이용하여 웹페이지를 쓰레드로 가져오는

프로그램을 제작중입니다.


아래와 같은 코드가 한개의 Thread에서 5~10개정도씩 호출됩니다.
(총 2000번정도 호출)


function Test:boolean;
var
  AHttp:TIdHTTP;
  ARefer:string;
  AURL:string;

  SS:TStringStream;
begin
  Result := True;
  SS := TStringStream.Create('');

  try
    AHttp := TIdHTTP.Create(nil);
    //AHttp.CreateIOHandler(nil);
    //ApplyRandomProxy(AHttp);

    with AHttp.Request do begin
      Accept := 'text/html, application/xhtml+xml, */*';
      AcceptEncoding := 'gzip, deflate';
      ...
    end;
        
    //Timeout 설정
    AHttp.ReadTimeout := InfoData.READ_TIMEOUT;
    AHttp.ConnectTimeout := InfoData.CONNECT_TIMEOUT;

    try
      //정상적인 처리가 아닌경우 Exception이 있는데도 오류발생!
      //readtimeout, connecttimeout등등
      AHTTP.Get( AURL, SS);
    except
      on E: Exception do begin
        Site38_Except.WriteExceptOnFile( e.message, ThreadID, AHttp.responsecode );
        if Assigned(AHttp) then begin
          AHttp.Disconnect;
          AHttp.Free;
        end;
        Result := False;
        exit;
      end;
    end;
    SS.Position := 0;
    ...
end;


문제는 idHttp가 Get해올때 정상적인 응답이 아닐경우(readtimeout, connecttimeout등)

Exception에서 처리를 해줬는데도  해당 프로시저에서 오류가 발생후

Thread의 Execute에서 Access violation이 납니다.


ioHandler도 써보고 한 사이트에 같은 Ip로 커넥션이 많은거 같아 Proxy로 10개씩 나눠보기도하고...

여러가지 방법을 써봤지만 답을 모르겠습니다. ㅠㅠ


1. idHttp의 에러시 Exception 처리말고 해줘야 하는게 있는지?
    (EIdException으로 잡아봤지만 동일한 결과였습니다.)

2. 당연히 Access violation후에는 메모리 반환이 안됩니다.

3. indy포럼에서 idComponent, idThread, idStack에서 filnalize로 메모리릭을 제거하는 코드도 사용했습니다.


혹시나 같은 경험이 있으신분들은 답변 부탁드립니다.

감사합니다.

+ -

관련 글 리스트
14157 쓰레드안에서 idHttp 동적생성시 오류 lsoap 4122 2012/03/06
14159     Re:자답 ㅡㅡ;;; lsoap 2684 2012/03/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.