Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net windows azure工作角色中的多线程_.net_C# 4.0_Dynamics Crm 2011_Azure Queues - Fatal编程技术网

.net windows azure工作角色中的多线程

.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

我已经从Azure worker角色构建了一个ASP.Net应用程序,它可以与CRM 2011进行内部交互。现在它是一个单线程应用程序。我想实现多线程,这样队列中的其他进程也可以异步处理。你能建议一下最好的方法是什么以及如何做吗。非常感谢您的任何推荐。

您想要的,或者。

我从来没有使用过Azure Worker角色,但是通过我的快速谷歌搜索,没有理由下面的代码不起作用。我将其用于现场CRM的批处理过程

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等等
  • 所有多线程规则都适用,任何共享数据都需要有保护措施,以确保其多线程安全

它是.NET。转到msdn.microsoft.com并在.NET Parallel上搜索。