我有一个动态 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/

10-13 07:54