anchor.diff:      lvSignalData := TSignalTaskData(FSignalTasks.FindFirstData(pvSignalID));
       if lvSignalData = nil then
       begin
  -      checkFreeData(pvTaskData, pvDataFreeType);
  +      CheckFreeData(pvTaskData, pvDataFreeType);
         raise Exception.CreateFmt(strSignalUnRegister, [pvSignalID]);
       end;
   
  
positive.code:     // if occur exception, push to requestPool.
      if lvRequest <> nil then requestPool.EnQueue(lvRequest);
  
      checkFreeData(pvTaskData, pvDataFreeType);
      raise;
    end;
  end;
  
negative.code:   strSignalAlreadyRegisted = 'ź(%d)Ѿע';
    strSignalUnRegister = 'ź(%d)ȡע';
  
  procedure CheckFreeData(var pvData: Pointer; pvDataFreeType: TDataFreeType);
  begin
    if pvData = nil then exit;
    if pvDataFreeType = ftNone then exit;
  