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». Результат сравнения переменных будет выведен в консоль среды разработки.
См. также: