下面的函数解释了GetResult的各个含义:
function grToStr(const gr: TCnObjectPoolGetResult): string;
begin
case gr of
grSuccess: Result := '成功获得一个池对象';
grReuse: Result := '获得一个正在使用的池对象'; //该对象其他地方也正在使用,意味着可能要处理多线程和维护正确的状态等问题
grReinitFail: Result := '池对象初始化失败'; //意味着可能需要重新获取别的对象,或者用自己的方法重新初始化该对象
grGetFail: Result := '获取池对象失败'; //一般在池被释放的时候获取,或者是在用户的OnGetOne方法中返回一个False,或者是PolicyOnBusy为bpGetFail且池处于Busy状态的时候,或者PolicyOnPeak为bpGetFail且池处于Peak状态的时候才会返回GetFail,由于此状态由用户控制,所以如果GetFail了,应该怎么处理也应由用户处理
grGetError: Result := '获取池对象出现内部错误'; //当从池中获得的对象不是预期的对象时会返回该状态,一般不会出现该问题,除非用户错误的释放了池中的对象或其他原因导致了池中的对象指针不再有效时才会出现该状态
grWaitFail: Result := '在获取池对象时等待超时'; //当设置PolicyOnBusy和PolicyOnPeak为bpGetWait时,等待超过了WaitTimeOut属性设置值时,停止等待,并返回该状态
else
Result := 'Unknown';
end;
end;