IMetabaseCache.FlushAll

Синтаксис

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

См. также:

IMetabaseCache