子线程同步处理
....
ClientFd := GetClientSocketfd;{同步函数}
Recv(ClientFd,Buf,len,0);
...
Error !

解决方案 »

  1.   

    能不能详细一点,线程中定义了 TClientSocket吗
      

  2.   

    我用API
    父线程将监听到的套接口传到子线程,子线程用一个数据类保存
      

  3.   

    Parent Thread
    if 发现客户线程 then
      PostThreadMessage(ChildThread.ID, WM_MyMessage, Integer(MyListenSocket), 0);child Threadvar
      NewClientSocket: TSocket;
    begin
      while {some condition} do
      begin
        while PeekMessage(Msg, 0, 0, 0, PM_REMOVE)
          case Msg.Message of
            My_Message:
            begin
              NewClientSocket := Msg.wParam;
              // how do do
            end;   
          end
        else WaitMessage;    
      end; 
    end;
      

  4.   

    如果可以,你在ChildThread中处理完成后,再给你的parent thread发送一条消息,说:收到,而且任务完成(或失败),还是用PostThreadMessage,那两个wParam,lParam灵活运用就行了.
      

  5.   

    抱歉,我解决了,但是很奇怪,用socketfd:Integer;不行,但是用var socketfd:Integer;
    就不会有WSAENOSOCK