2015-12-31 3 views
3

У меня есть плагин Dynamic CRM, который имеет два шага. Один работает на предварительном создании, а второй работает после создания. Я использовал общие переменные. Я устанавливаю значения в общих переменных при предварительном создании и возвращении значений в post-create.Dynamic CRM Shared Variables Thread Safety

Теперь это безопасный поток. Если два пользователя запускают один и тот же плагин в той же организации, не будут ли они писать данные друг друга?

Заданные значения в общих переменных:

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

получить значения из общих переменных:

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

ответ

3

Да, это потокобезопасна. IPluginExecutionContext, переданный вашему классу плагинов, является объектом, который уникально создан для конвейера выполнения плагина. Общие переменные передаются от одного этапа к другому (PreValidation => PreOperation => PostOperation => AsyncOperation).

Конвейер выполнения определен для любой отдельной операции, обработанной платформой CRM. (Например, сообщение о создании или обновлении конкретной записи.)