【发布时间】:2015-11-28 13:02:20
【问题描述】:
我有时会将大量数据推送到 CRM 中,例如批量更新。它是在工作流 (CodeActivity) 类中完成的,使用其 Execute() 方法。我可以使用传递给该方法的参数(上下文)来获取 ServiceFactory,然后依次创建 IOrganizationService。
然后我迭代一个对象列表以更新、更改属性并调用service.Update(myObj)。到目前为止一切顺利。
现在,为了加快速度,我想我会运行 2-4 个并行执行更新的线程。
问题 1 如果我运行两个或更多线程,我应该重用刚刚创建的服务,还是创建一个新服务? IE。每个线程创建一个服务,还是共享它?
我基本上是在做Parallel.Invoke(action1, action2, action3);,其中每个操作都需要一个服务实例来调用service.Update(myObj);
问题 2
如果调用serviceFactory.CreateOrganizationService(context.UserId),它实际上是创建一个新的服务,还是返回一个现有的?
我已经确定了其他所有内容,它工作得很好,但想要在工作流的 Execute() 方法中获得多线程时的推荐/最佳实践。
【问题讨论】:
标签: c# multithreading performance dynamics-crm-2011 crm