小编San*_*era的帖子

创建大量Sitecore项会导致内存泄漏

我有一个Sitecore应用程序,我需要在另一个系统的循环中创建大量的Sitecore项目.以下是我的测试目的循环;

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    for (int i = 0; i < 20000; i++)
    {
        Item newItem = MyTemplateItem.CreateItemFrom(DateTime.Now.Ticks.ToString(), myParentItem);

        newItem.Editing.BeginEdit();
        newItem.Fields["Title"].Value = Guid.NewGuid().ToString();
        newItem.Editing.EndEdit();
    }
}
Run Code Online (Sandbox Code Playgroud)

当此循环正在运行并且在查看任务管理器时,进程内存使用量随着时间的推移而增加.

Sitecore Item类还没有实现IDisposable接口,所以我无法调用已创建项的Finalizer.

我怎样才能避免这种内存泄漏?

PS:我正在使用Windows应用程序来执行此操作以绕过IIS进程内存泄漏,其中Sitecore执行其缓存更新和索引构建,这应该在此过程结束时完成.

.net garbage-collection memory-leaks memory-management sitecore

6
推荐指数
1
解决办法
1757
查看次数

如何更新Sitecore索引中的单个项目?

在我的Sitecore内容树中,有几千个项目,我只想以编程方式更改几个项目.我想要更新我正在实时更改的每个项目的索引条目,而不是重建占用大量时间的整个lucene索引.我试过了

item.Database.Indexes.UpdateItem(item);
Run Code Online (Sandbox Code Playgroud)

但它已经过时并要求我使用SearchManager.

任何人都可以指导我如何更新给定项目的索引条目?

PS:我正在改变桌面应用程序中的项目,而不是网站.

c# lucene lucene.net sitecore sitecore6

3
推荐指数
1
解决办法
2297
查看次数

Sitecore检测项目保存在EventDisabler()上下文中

在我的sitecore Web应用程序OnItemSaved事件中,我想检测项目是否正在EventDisabler上下文中保存.例如,项目编辑如下所示......

using (new EventDisabler())
{
    item.Editing.BeginEdit();
    // do edits
    item.Editing.EndEdit();
}
Run Code Online (Sandbox Code Playgroud)

在下面的方法中,我想识别在EventDisabler上下文中编辑的项目.

protected void OnItemSaved(object sender, EventArgs args)
{
     // detect EventDisabler() context
}
Run Code Online (Sandbox Code Playgroud)

此外,item.Editing.EndEdit(true);我可以保存一个项目,这意味着它意味着使用EventDisabler上下文.应用它的方式我只想检测EventDisabler().如何检测EventDisabler()?

asp.net sitecore sitecore6 c#-4.0

3
推荐指数
1
解决办法
1177
查看次数