FlushAll;
Метод FlushAll очищает ссылки на объекты, хранящиеся в кэше репозитория.
При выполнении метода также будет очищен локальный кэш со ссылками на объекты среды разработки и их зависимостями. Для очистки кэша без очистки кэша ссылок на объекты используйте метод IMetabaseCache.MetabaseFlushAll или IMetabaseCache.MetabaseFlush.
Для выполнения примера предполагается наличие в репозитории объекта с идентификатором OBJECT_1.
Sub UserProc;
Var
MB: IMetaBase;
Obj1, Obj2, Obj3: IMetabaseObject;
Cache: IMetabaseCache;
Begin
MB := MetabaseClass.Active;
Cache := MB.Cache;
Obj1 := MB.ItemById("Object_1").Bind;
Obj2 := MB.ItemById("Object_1").Bind;
Cache.FlushAll;
Obj3 := MB.ItemById("Object_1").Bind;
If Obj1 = Obj2 Then
Debug.WriteLine("Obj1 = Obj2");
Else
Debug.WriteLine("Obj1 <> Obj2");
End If;
If Obj1 = Obj3 Then
Debug.WriteLine("Obj1 = Obj3");
Else
Debug.WriteLine("Obj1 <> Obj3");
End If;
End Sub UserProc;
При выполнении примера в кэше репозитория будет помещена копия объекта с идентификатором Object_1. В переменных obj1 и obj2 будет содержаться ссылка на эту копию. После вызова метода FlushAll произойдет очистка ссылки на этот объект и при следующем обращении в кэш будет помещена еще одна копия объекта. В переменной obj3 будет храниться ссылка на вторую копию объекта с идентификатором Object_1. Результат сравнения переменных будет выведен в консоль среды разработки.
См. также: