제가 CreateThread를 이용해서 쓰레드를 생성시켰습니다..
그리고.. CreateThread(nil,0,@sockconnect,nil,0,Thrid);
이런식으로 CreateThread 함수를 쓰고요..
function Tform1.Sockconnect(p:pointer): Longint;
begin
<========== 요기 다.. 컴포넌트 생성..
end;
위에 표시된 부분에다 컴포넌트 생성 코드를 넣고.. 컴포넌트를 생성 하면서..
이벤트도 선언을 해 줘거든요.. 참고로 제가 만든 컴포넌트는 클라이언트 소켓입니다.
컴포넌트 생성... 생략..
OnConnect:= ClientSocketConnect;
이런식으로요..
근데.. 이걸 그냥 다른 프로시저에다 쓰면 되는데요..
쓰레드 생성하는 부분에서 쓰면.. 소켓이 생성돼서 통신연결은 되는데..
이벤트가 발생이 되지를 않네요.. 무슨 이유가 있는지..
참고로..
procedure Tform1.clientsocketconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
memo1.lines.add('성공');
end;
이벤트 부분은 이렇게 해 줬거든요..
그리고 프로그램을 실행 시키면.. 소켓 생성과 서버에 연결은 되는데..
연결 될때.. Connect 이벤트가 일어나질 않아요..
왜그런지.. 답변좀.. 부탁드립니다..
memo1에 출력하는 부분을 criticalsection으로 둘러싸세요.
대충.
entercriticalsection
leavecriticalsection
ini~
del~
이정도 API 찾아보시면 쉽게 하실 겁니다.
그리고 혹시 TThread를 같은 프로세스에서 쓰신다면 IsMultiThreaded 맞나?.스펠이 잘 기억 안나느군요..이거 True로 해주셔야 합니다. TThread 상속 안받고..CreatThread로 만드셧잖아요...델파이가 쓰레드가 늘어났는지 모르니까..
그럼 이만.
델파초짜.. wrote:
> 제가 CreateThread를 이용해서 쓰레드를 생성시켰습니다..
> 그리고.. CreateThread(nil,0,@sockconnect,nil,0,Thrid);
> 이런식으로 CreateThread 함수를 쓰고요..
>
> function Tform1.Sockconnect(p:pointer): Longint;
> begin
>
> <========== 요기 다.. 컴포넌트 생성..
> end;
>
> 위에 표시된 부분에다 컴포넌트 생성 코드를 넣고.. 컴포넌트를 생성 하면서..
> 이벤트도 선언을 해 줘거든요.. 참고로 제가 만든 컴포넌트는 클라이언트 소켓입니다.
>
> 컴포넌트 생성... 생략..
> OnConnect:= ClientSocketConnect;
>
> 이런식으로요..
> 근데.. 이걸 그냥 다른 프로시저에다 쓰면 되는데요..
>
> 쓰레드 생성하는 부분에서 쓰면.. 소켓이 생성돼서 통신연결은 되는데..
> 이벤트가 발생이 되지를 않네요.. 무슨 이유가 있는지..
> 참고로..
> procedure Tform1.clientsocketconnect(Sender: TObject; Socket: TCustomWinSocket);
> begin
> memo1.lines.add('성공');
> end;
>
> 이벤트 부분은 이렇게 해 줬거든요..
> 그리고 프로그램을 실행 시키면.. 소켓 생성과 서버에 연결은 되는데..
> 연결 될때.. Connect 이벤트가 일어나질 않아요..
> 왜그런지.. 답변좀.. 부탁드립니다..
>