unit GetInfoThread;interface
uses  Classes,Messages, SysUtils,windows,StdCtrls,ShellApi,Controls,Unit1,ScktComp;  type
    ReadThread=class(TThread)
    private
      ClientSocket1: TClientSocket;
    protected
      procedure Execute; override;
    public
      Constructor Create(Socket1: TClientSocket);
  end;
implementation{ ReadThread }constructor ReadThread.Create(Socket1: TClientSocket);
begin
   ClientSocket1:=Socket1;
   inherited Create(False);
end;procedure ReadThread.Execute;
var
  sStream:TWinSocketStream;
  sBuffer:array[0..9] of char ;
begin
  While (ClientSocket1.Active) do
  begin
  try
    sStream:=TWinSocketStream.Create(ClientSocket1.Socket,60000);
    FillChar(sBuffer,10,0);
    if sStream.WaitForData(60000) then
    begin
      sStream.Read(sBuffer,SizeOf(sBuffer));
      Form1.Memo1.Lines.Add(sBuffer);
    end
    else
      ClientSocket1.Close;
  finally
    sStream.Free;
  end;
  end;
end;
end.请问这个线程怎么接收不到ClientSocket.onRead()的信息.
以下是我的调用的方法:procedure TForm1.Button1Click(Sender: TObject);
var
  SocketThread:ReadThread;
begintry
  ClientSocket1.Port:=1234;
  ClientSocket1.Address:='192.168.1.119';
  ClientSocket1.Active:=true;
  ClientSocket1.Socket.SendText('info:sfq:192.168.1.102'+#13);
  SocketThread.Create(ClientSocket1);
except on E:Exception do
  ShowMessage(E.Message);
end;
end;

解决方案 »

  1.   

    你的线程没跑起来
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
      SocketThread:ReadThread; 
    begin try 
      ClientSocket1.Port:=1234; 
      ClientSocket1.Address:= '192.168.1.119 '; 
      ClientSocket1.Active:=true; 
      ClientSocket1.Socket.SendText( 'info:sfq:192.168.1.102 '+#13); 
      SocketThread.Create(ClientSocket1,true); //SocketThread.Create(ClientSocket1); 
    except on E:Exception do 
      ShowMessage(E.Message); 
    end; 
    end;
      

  2.   

    刚才写错了应该是
    SocketThread.Create(ClientSocket1,false);
    表示创建后直接运行
    或者在后面加上SocketThread.Create(ClientSocket1);  
    SocketThread.resume;
      

  3.   

    谢谢!不过问题依旧,现在有以下错误提示:Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address D68BD88B.Read of address D68BD88B'.Process stopped.Use Step or Run to continue