BeginUpdate (role)

De Wiki1000
Version du 8 janvier 2010 à 14:42 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
procedure BeginUpdate;

Cette procédure indique le début d'un ensemble d'opérations dans le rôle.

Pas de paramètre.
Info-20px.png Note : A l'intérieur d'un bloc BeginUpdate / EndUpdate les évènements de notification du rôle sont désactivés et enregistrés, à la fin de l'actualisation un évènement de chaque type enregistré sera émis.


Exemple

var inst:WFClasseC; idx:Integer; t1,t2,t3:longint;
begin
  WFClasseCList.BeginUpdate;
  try
    t1 := GetTickCount;
    ClassManager.BeginLongTran(100,'WFClasseC');
    ClassManager.TranAutoBatch := True;
    try
      for idx:=0 to ACount-1 do
       begin
         inst := WFClasseC.Create;
         inst.oidWFClasseARef := OID;
         inst.uneChaine := uneChaine +'-'+ inttostr(idx);
       end;
    t2 := GetTickCount;
    ClassManager.CommitLongTran;
    t3 := GetTickCount;
    ShowMessage(Format('batch:%d loop:%s commit:%s',[
                   ClassManager.TranBatchCount,
                   TickToString(t2-t1),
                   TickTostring(t3-t2)]));
    except
    ClassManager.RollBackLongTran;
    raise;
    end;
  finally
  WFClasseCList.EndUpdate;
  end;
end;

Résultat de l'exécution lorsque le code est appelé d'une interface affichant une grille sur le rôle liste (Création de 110 objets) :

  • Sans BeginUpdate/EndUpdate : 216757 ms
  • Avec BeginUpdate/EndUpdate : 180 ms

Voir aussi

Rôles (tech)Développement DSM

Outils personnels