2014-05-18 54 views
1

我目前有以下代碼 - 在我的MVC控制器上,我從用戶獲取汽車輸入,然後調用一個服務異步傳遞一個由用戶上傳的汽車包,該包調用外部WebService得到信息:Kick off N異步方法的數量

const int packageSize = 100; 
var packages = Split(cars, packageSize); 

BackgroundTaskManager.Run(async() => 
{ 
    foreach (var package in packages) 
    { 
     await _myService.AddCars(package); 
    } 
}); 

所以,如果我的用戶上傳560如汽車我Split函數將返回6個pacakages - 5 100輛汽車和1 60

不是有一個foreach循環是存在的一個簡單的方法,我可以啓動n個異步方法,其中n是從我的拆分服務返回的包的數量,但我需要pa從Split函數返回的每個單獨包到單獨的方法,還是我上面使用的方法是最好的方法?

回答

2
await Task.WhenAll(packages.Select(_myService.AddCars)) 
+1

嗨 - 你可以把這個信息作爲一個信息,如果這是如何工作,如果可能? –

+0

不幸的是,在代碼就緒的情況下引發以下錯誤 - 通信對象System.ServiceModel.Channels.HttpChannelFactory1 + HttpRequestChannel [System.ServiceModel.Channels.IRequestChannel]不能用於通信,因爲它已被中止。 –