【发布时间】:2020-04-20 18:12:33
【问题描述】:
我想为动态 crm 插件实现一个内部计数器。但我不确定这对于多线程等是否是个好主意。
应该是这样的:
sealed class Counter
{
private int current = 0;
public int NextValue()
{
return Interlocked.Increment(ref this.current);
}
public void Reset()
{
this.current = 0;
}
}
这可能是 Dynamics 插件中的问题?
感谢您对此的看法。
【问题讨论】:
-
您应该使用 Interlocked.Exchange 进行重置。假设您只有一个 Dynamics 实例,这将起作用。一旦它在多个实例(多个服务器、负载平衡器等)上运行,那么它将无法工作,您将需要另一种方法。我建议使用可以进行原子增量的数据库,因为它实现起来相当简单。
标签: c# multithreading plugins dynamics-crm counter