2012-08-03 31 views
1

我已经构建了一个ASP.Net应用程序,该应用程序与Azure工作者角色的前提下与CRM 2011交互。现在它是一个单线程应用程序。我想实现多线程,以便队列中的其他进程也可以异步处理。你能否建议什么是最好的办法,以及如何做到这一点。任何参考将不胜感激。windows中的多线程azure工作角色

+0

它是.NET。转到msdn.microsoft.com并搜索.NET Parallel。 – Paparazzi 2012-08-03 12:18:32

回答

0

我从来没有使用Azure工作者角色,但从我的快速搜索,没有理由下面的代码不应该工作。我将其用于现场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等...
  • 所有多线程规则适用,任何共享数据将需要有一个保证,以确保它是多t安全。
相关问题