程序运行过程中,经常弹出 THREAD ERROR 句柄无效 6 的错误,我不道是什么原因,请高手指点,
非常感谢!
附源码:var
DataThread: TClientDataThread;
ReceiveText: String;
begin
//创建线程;
DataThread:= TClientDataThread.Create(true,CPADO,FCS,FServerSocket,ListBoxHandle,FormHandle); DataThread.FRemoteIP := Socket.RemoteAddress ;
DataThread.FSokcetHandle := Socket.Handle ; ReceiveText := Trim(Socket.ReceiveText) ; //一次只处理一个指令;
ReceiveText:=GetOneCommandText(ReceiveText); if ReceiveText='' then DataThread.Free; DataThread.FReceiveInfo := ReceiveText ; //唤醒线程;
DataThread.Resume;
end;constructor TClientDataThread.Create(CreateSuspended: Boolean; APool:TCustomConnectionPool; CS:TRTLCriticalSection; ServerSocket:TServerSocket;
ListBoxHandle,FormHandle: Integer);
begin
inherited Create(CreateSuspended);
//线程终止时自动删除对象
FListBoxHandle := ListBoxHandle ;
FFormHandle:= FormHandle;
FServerSocket := ServerSocket;
FreeOnTerminate := true;
FPool := APool;
FCS := CS ;
end;procedure TClientDataThread.Terminate;
begin
inherited;
end;
非常感谢!
附源码:var
DataThread: TClientDataThread;
ReceiveText: String;
begin
//创建线程;
DataThread:= TClientDataThread.Create(true,CPADO,FCS,FServerSocket,ListBoxHandle,FormHandle); DataThread.FRemoteIP := Socket.RemoteAddress ;
DataThread.FSokcetHandle := Socket.Handle ; ReceiveText := Trim(Socket.ReceiveText) ; //一次只处理一个指令;
ReceiveText:=GetOneCommandText(ReceiveText); if ReceiveText='' then DataThread.Free; DataThread.FReceiveInfo := ReceiveText ; //唤醒线程;
DataThread.Resume;
end;constructor TClientDataThread.Create(CreateSuspended: Boolean; APool:TCustomConnectionPool; CS:TRTLCriticalSection; ServerSocket:TServerSocket;
ListBoxHandle,FormHandle: Integer);
begin
inherited Create(CreateSuspended);
//线程终止时自动删除对象
FListBoxHandle := ListBoxHandle ;
FFormHandle:= FormHandle;
FServerSocket := ServerSocket;
FreeOnTerminate := true;
FPool := APool;
FCS := CS ;
end;procedure TClientDataThread.Terminate;
begin
inherited;
end;
手动释放线程改成false