Interlocked.Increment 在 Dynamics Crm 插件中?

Interlocked.Increment in Dynamics Crm Plugin?

我想为 dynamics crm 插件实现一个内部计数器。但我不确定这对于多线程等是否是个好主意

会是这样的:

sealed class Counter
{
    private int current = 0;

    public int NextValue()
    {
        return Interlocked.Increment(ref this.current);
    }

    public void Reset()
    {
        this.current = 0;
    }
}

这可能是 Dynamics 插件中的一个问题?

感谢您对此的看法。

不清楚这个计数器的用途是什么。是一些业务逻辑还是只是为了统计?

如果您需要实体编号计数器,则可以使用 OOB 功能https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/create-auto-number-attributes

D365 有分布式部署。同一插件可能在 FE、Async 或 Sandbox 应用程序域上 运行,通常每个插件都有多个实例。因此,如果您真的想编写自己的分布式计数器,则必须让它在任意数量的不同应用程序域上运行。多线程在这里无能为力。所有实例都必须依赖单一的事实来源。这必须是一些外部服务或组织数据库。

一些开发人员已经调查了这个问题并编写了带有代码片段的文章:

P.S。市场上也有 autonumbering\counters 的商业解决方案。