我需要修改下面的代码,以使用parallel.foreach
循环与常规foreach循环。
我遇到的问题是将对象传递给foreach循环。我刚开始使用parallel.foreach
循环-有没有人对此有一些信息?
当前代码
var objSellerPeramaterValuesList = objInboundDB.GetMwsRequestParameters();
foreach (SellerModel objSellerPeramaterValues in objSellerPeramaterValuesList)
{
Method.InsertProcessLog(new ProcessLogModel
{
sProcessName = sProcessName,
sSellerID = objSellerPeramaterValues.sSellerId,
sStartDate = sProcessStartDate,
sEndDate = sProcessEndDate,
sStatus = "STARTED",
sMessage = "Started Process For ID .. " + objSellerPeramaterValues.sSellerId
});
// more code here......
}
问题是列表将包含3000+项,循环将循环每一项,我需要并行地运行它们。
因此,我想使用parallel.foreach
函数,但我无法通过传递对象来使其工作。
看起来您应该能够做到:
Parallel.ForEach(objSellerPeramaterValuesList, objSellerPeramaterValues =>
{
/* exact same code */
// Method.InsertProcessLog(...) // etc
});
但是,您必须非常注意排序和并发性--如果您正在做的任何事情(包括您正在使用的组件/工具)不是/不是被设计成线程安全的:这是坏事。