Q&A

  • 쓰레드에서 생성한 컴포넌트의 이벤트
제가 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 이벤트가 일어나질 않아요..

왜그런지.. 답변좀.. 부탁드립니다..



1  COMMENTS
  • Profile
    김현 2001.03.01 08:22
    serialize가 안된 겁니다.

    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 이벤트가 일어나질 않아요..

    > 왜그런지.. 답변좀.. 부탁드립니다..

    >