anchor.diff:    Result.FObjectAlive := True;
   end;
   
  +function TDiocpCustom.GetRecvRequest: TIocpRecvRequest;
  +begin
  +  if UseObjectPool then
  +  begin
  +    Result := TIocpRecvRequest(FRecvRequestPool.DeQueue);
  +    if Result = nil then
  +    begin
  +      Result := TIocpRecvRequest.Create;
  +      if FDataMoniter <> nil then FDataMoniter.IncRecvRequestCreateCounter;
  +    end;
  +    Result.Tag := 0;
  +    Result.FAlive := true;
  +    //Result.DoCleanup;
  +    Result.FOwner := Self;
  +    if FDataMoniter <> nil then FDataMoniter.IncRecvRequestOutCounter;
  +  end else
  +  begin
  +    Result := TIocpRecvRequest.Create;
  +    if FDataMoniter <> nil then FDataMoniter.IncRecvRequestCreateCounter;
  +    Result.Tag := 0;
  +    Result.FAlive := true;
  +    Result.FOwner := Self;
  +    if FDataMoniter <> nil then FDataMoniter.IncRecvRequestOutCounter;
  +  end;
  +end;
  +
   procedure TDiocpCustom.OnCreateContext(const context: TDiocpCustomContext);
   begin
   
  
positive.code: 
    FRawSocket.close;
    FRawSocket.Free;
  
    if FRecvRequest.Responding then
    begin
      // Ӧͷ
      FRecvRequest.DestroyOnResponseEnd := true;
    end else
    begin
      FRecvRequest.FContext := nil;
      FRecvRequest.Free;
    end;
  
  
    Assert(FSendRequestLink.Count = 0);
  
negative.code:   /// </summary>
    TIocpRecvRequest = class(TIocpRequest)
    private
      FAlive:Boolean;
      FInnerBuffer: diocp_winapi_winsock2.TWsaBuf;
      FRecvBuffer: diocp_winapi_winsock2.TWsaBuf;
      FRecvdFlag: Cardinal;
      FOwner: TDiocpCustom;
      FContext: TDiocpCustomContext;
      FDebugInfo:String;
      /// <summary>
      ///   黹ͷ
      /// </summary>
      procedure ReleaseBack;
    protected
  
      /// <summary>
  