안녕하세요
델파이로 ASP 서버 컴포넌트를 제작하였습니다.
인디 소켓을 통해서 문자열을 보내고 결과를 받는건데...
인디를 사용하다보니 소켓에서 응답을 받는부분에 스레드로 구현했는데
막상 서버 컴포넌트를 실행하면 스레드가 작동하지 않는것 같습니다.
아래 스레드랑 제가 ASP에서 부르는 함수입니다.
//------------------------------------------------------------------
// 전역변수
var
Return_Value: String;
procedure TMyThread.View;
begin
Return_Value := Msg;
end;
procedure TMyThread.Execute;
begin
while not Terminated do
begin
try
Msg := IdTCPClient1.ReadLn(#13);
Synchronize(View);
except
Terminate;
end;
end;
end;
procedure TASPComp.OnEndPage;
begin
inherited OnEndPage;
end;
procedure TASPComp.OnStartPage(const AScriptingContext: IUnknown);
begin
inherited OnStartPage(AScriptingContext);
end;
function TASPComp.Get_Check(const Str: WideString): WideString;
begin
IdTCPClient1 := TIdTCPClient.Create(nil);
IdTCPClient1.Host := '아이피';
IdTCPClient1.Port := 포트;
IdTCPClient1.Connect;
MyThread := TMyThread.Create(true);
MyThread.FreeOnTerminate := true;
MyThread.Resume;
// 리턴값 받을 변수 초기화
Return_Value := '';
// 정보 보냄
IdTCPClient1.Write(PChar('이런저런것들'));
Result := WideString(Return_Value);
IdTCPClient1.DisConnect;
IdTCPClient1.Free;
end;
//------------------------------------------------------------------
ASP 소스에서는 다음처럼 호출합니다.
<%
dim r
set test = Server.CreateObject("test.AspComp")
r = test.Check("1234567890")
response.write r
%>
여기서 서버 컴포넌트는 잘 실행됩니다. 실행만요...
그런데 소켓으로 값을 보냈으면 결과를 받아야 하는데
서버 컴포넌트 만들기 전에 테스트용으로 폼에 올려놓고 해본결과는 잘 되거든요
스레드 잘 돌고...
그런데 서버 컴포넌트로만 만들면 TMyThread.Execute 가 실행이 안되는거
같습니다.
이거 왜 이럴까요?
아시는 분 답변좀 부탁드립니다~