c# - 动态 CRM 共享变量线程安全

标签 c# multithreading plugins dynamics-crm

我有一个包含两个步骤的 Dynamic CRM 插件。一个在创建前运行,第二个在创建后运行。我使用了共享变量。我在创建前设置共享变量中的值,并在创建后检索值。

现在是线程安全的了。如果两个用户在同一个组织中触发同一个插件,他们不会覆盖彼此的数据吗?

在共享变量中设置值:

context.SharedVariables.Add("statecode", stateCodeValue);
context.SharedVariables.Add("statuscode", statusCodeValue);

从共享变量中获取值:

int statecode = (int)context.SharedVariables["statecode"];
int statuscode = (int)context.SharedVariables["statuscode"];

最佳答案

是的,这是线程安全的。传递给您的插件类的 IPluginExecutionContext 是为插件执行管道唯一创建的对象。共享变量从一个阶段传递到下一个阶段(PreValidation => PreOperation => PostOperation => AsyncOperation)。

执行管道特定于 CRM 平台处理的任何单个操作。 (例如,关于特定记录的创建或更新消息。)

关于c# - 动态 CRM 共享变量线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34547324/

相关文章:

eclipse - 有哪些插件可用于在 Vim 或 Eclipse 中编辑 ASCII 图表?

c# - ASP.net Identity v2.0.0 电子邮件确认/重置密码错误

c# - 更改部分类中的 LINQ2SQL 属性?

python-3.x - pygame多线程,程序崩溃

multithreading - Lparallel.queue 线程安全吗?

asp.net - System.Addin - 创建安全的 ASP.NET MVC 插件

c# - 违反了多重约束 Entity Framework 5

c# - 我需要在 c# 中用 new 初始化列表吗?

c - 多个进程,一个互斥锁

javascript - 为什么 jQuery 不能在 IE11 中运行