.net windows azure工作角色中的多线程
我已经从Azure worker角色构建了一个ASP.Net应用程序,它可以与CRM 2011进行内部交互。现在它是一个单线程应用程序。我想实现多线程,这样队列中的其他进程也可以异步处理。你能建议一下最好的方法是什么以及如何做吗。非常感谢您的任何推荐。您想要的,或者。我从来没有使用过Azure Worker角色,但是通过我的快速谷歌搜索,没有理由下面的代码不起作用。我将其用于现场CRM的批处理过程.net windows azure工作角色中的多线程,.net,c#-4.0,dynamics-crm-2011,azure-queues,.net,C# 4.0,Dynamics Crm 2011,Azure Queues,我已经从Azure worker角色构建了一个ASP.Net应用程序,它可以与CRM 2011进行内部交互。现在它是一个单线程应用程序。我想实现多线程,这样队列中的其他进程也可以异步处理。你能建议一下最好的方法是什么以及如何做吗。非常感谢您的任何推荐。您想要的,或者。我从来没有使用过Azure Worker角色,但是通过我的快速谷歌搜索,没有理由下面的代码不起作用。我将其用于现场CRM的批处理过程 var options = new ParallelOptions(); // For singl
var options = new ParallelOptions();
// For single Thread debugging, set MaxDegreeOfParallelism to 1:
options.MaxDegreeOfParallelism = 10; // Make this value configurable you can slow down CRM if you try to pump too many things through it.
var actions = GetListOfWorkItems().Select(workItem => (Action)(() => ProcessWorkItem(workItem)));
Parallel.Invoke(options, actions.ToArray());
private void ProcessWorkItem(WorkItem workItem){
// Code to run in parallel goes here
}
就几张便条
- IOrganization不是多线程安全的,因此请为每个需要它的线程创建一个
- 如果您正在处理数千条记录,那么批处理记录通常效率更高,因此线程1打开一个连接,处理项目1-1000,线程2打开一个连接,处理项目10001-2000等等
- 所有多线程规则都适用,任何共享数据都需要有保护措施,以确保其多线程安全