2012-08-03 62 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安全。
相關問題