我正在开发一个插件。当我在PostUpdate插件中更新实体时,会触发PreUpdate插件PostUpdate插件,并且它会被无限循环捕获。
如何打破无限循环?
答案 0 :(得分:1)
使用Depth属性打破无限循环。
在你的插件中,检查PluginExecutionContext.Depth
是否大于1,如果是,则返回。
相关代码段。
if (localContext.PluginExecutionContext.Depth > 1)
{
return;
}
答案 1 :(得分:0)
我想补充一点,CRM插件陷入无限循环的主要原因之一是插件正在使用CRM服务来更新首先触发插件的记录。
不是使用dept属性检查递归,而是使用目标图像简单地执行CRM记录更新的更好方法。
以下帖子解决了类似的问题:crm 2011 Updating the record that fired the Plugin in post-sync and post-async stage
有些情况下这种递归是不可避免的;但通常值得理解为什么递归发生并且可以避免。