Dynamics crm 2011 如何管理多个crm 2011工作流异步调用?

Dynamics crm 2011 如何管理多个crm 2011工作流异步调用?,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我正在尝试构建一个自定义工作流,将联系人或帐户插入营销列表。 所以,除了我尝试打多个电话之外,它工作得非常好。在这种情况下,我注意到并非每个流程都会出现此错误: 工作流因错误而暂停:未处理的异常: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk,版本=5.0.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35]

我正在尝试构建一个自定义工作流,将联系人或帐户插入营销列表。 所以,除了我尝试打多个电话之外,它工作得非常好。在这种情况下,我注意到并非每个流程都会出现此错误:

工作流因错误而暂停:未处理的异常: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk,版本=5.0.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35]]:ValidateOpen-已处理 不应处理的CRMDB连接详细信息:
-2147220968消息>ValidateOpen-在 不应处理它/消息>
2013-03-19T11:47:06.588342Z -2147220970 消息>System.ObjectDisposedException:Microsoft Dynamics CRM已 经历了一个错误。管理员或支持的参考编号: FB9BF845/信息

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Microsoft.Crm.Sdk.Messages;
使用Microsoft.Xrm.Sdk;
使用Microsoft.Xrm.Sdk.Workflow;
使用系统活动;
使用System.IO;
命名空间ContactToMarketingList
{
公共类联系人列表:CodeActivity
{      
受保护的覆盖无效执行(CodeActivityContext executionContext)
{
尝试
{
新添加列表(executionContext、contact、MList、inserimento);
}
抓住
{
}
}
[输入(“Contatto”)]
[参考目标(“联系”)]
公共InArgument联系人{get;set;}
[输入(“营销列表”)]
[参考目标(“列表”)]
公共InArgument MList{get;set;}
[输入(“插入”)]
公共InArgument插入{get;set;}
布尔动作=假;
私有静态IOR组织服务myService=null;
私有静态字符串\u separatore=“\r\n”;
私有静态字符串fileName=“c:\\temp\\ContactToMList\u logs.txt”;
整数计数=0;
}
公共类地址列表
{
专用静态Guid\u contactiId;
私有静态Guid _listId;
私有静态bool_insert=false;
私有静态bool_action=false;
私有静态IExecutionContext_executionContext=null;
私有静态IOOrganizationServiceFactory\u organizationServiceFactory=null;
私有静态组织服务_service=null;
公共地址列表(CodeActivityContext executionContext、InArgument联系人、InArgument MList、InArgument inserimento)
{
_executionContext=executionContext.GetExtension();
_organizationServiceFactory=executionContext.GetExtension();
_服务=\u organizationServiceFactory.CreateOrganizationService(\u executionContext.UserId);
_contactiId=contact.Get(executionContext).Id;
_listId=MList.Get(executionContext.Id);
_insert=inserimento.Get(executionContext);
_addtoList();
}
私有静态void_addtoList()
{
XrmDataContext=新的XrmDataContext(_服务);
var MyContact=(从datacontext.ContactSet中的c开始,其中c.ContactId==_contactiId选择c.Id).ToArray();
var MyList=(从datacontext.ListSet中的l开始,其中l.Id==_listId选择l.ToList().FirstOrDefault();
var members=(从datacontext.ListMemberSet中的m开始,其中m.ListId.Id==MyList.ListId选择m.EntityId.Id).ToArray();
foreach(成员中的Guid id)
if(MyContact.FirstOrDefault()==id)
_行动=正确;
如果(_插入&&!_操作)
{
AddListMembersListRequest AddMemberRequest=新的AddListMembersListRequest();
AddMemberRequest.ListId=\u ListId;
AddMemberRequest.MemberId=MyContact;
AddListMembersResponse AddMemberResponse=\服务。作为AddListMembersResponse执行(AddMemberRequest);
}
否则如果(!\u插入和操作)
{
//文件.AppendAllText(文件名,“将联系人删除到列表-Inalizio”+_separatore);
RemoveMemberListRequest RemoveMemberRequest=新RemoveMemberListRequest();
RemoveMemberRequest.ListId=\u ListId;
RemoveMemberRequest.EntityId=MyContact.FirstOrDefault();
//使用AddListMembersListResponse获取有关请求执行的信息
RemoveMemberListResponse RemoveMemberResponse=\服务。作为RemoveMemberListResponse执行(RemoveMemberRequest);
//服务更新(MyList);
//AppendAllText(文件名,“将联系人删除到列表-精细”+_separatore);
}
其他的
{
//File.AppendAllText(fileName,insert==true?“L'utenteègièpresenter nella Lista di Marketing.”+_separatore:“L'utente nonèpresenter nella Lista di Marketing.”+_separatore:“L'utente nonèpresenter nella Lista di Marketing;
}    
}
}
}

尝试查看具有可能解决方案的类似问题时,错误类似。祝你好运。嗨,谢谢你的回答…在那个帖子里我有点不清楚。所以他说,“当后续执行到将类级别服务变量设置为IOrganisationService实例的代码时,它会发现变量已经有一个实例,并且它是打开的。我发现最容易实现的解决方案是在Execute函数中包含服务变量,而不是类级别。这解决了我尝试过的所有地方的问题。“但是我不知道执行方法中有多么讨厌这个变量。能给我举个例子吗???