繁体   English   中英

Dynamics Crm 插件中的 Interlocked.Increment?

[英]Interlocked.Increment in Dynamics Crm Plugin?

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

会是这样的:

sealed class Counter
{
    private int current = 0;

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

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

也许这可能是动态插件中的问题?

感谢您对此的想法。

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

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

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

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

PS 市场上还有用于自动编号\计数器的商业解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM