我正在循环来自tblCustomer的数据并检查地址是否有效。如果没有,那么我将它添加到我的返回列表中。 这个问题有37000行需要验证。验证通过外部库完成。这需要约1小时。我想这样做,所以我可以做得更快。 有人可以帮我改写它吗?此外,我还在某处阅读并行课程或foreach。我想知道的几件事 -通过并行运行foreach循环来构建结果列表
它会创建多少个线程?我们如何控制这一点?
我们可以说每个线程会处理多少条记录吗?
我觉得最隐含的问题是:这个DLL有静态类来验证地址。当我把它分解成线程时,它会给我带来什么性能增益吗?还是需要同一时间?
List<tblCustomer> customers = new List<tblCustomer>();
int i = 0;
foreach (var customer in DataContext.tblCustomers)
{
string addressToValidate = string.Format("{0}, {1}; {2} {3}", GetSafeString(customer.MailingCity), GetSafeString(customer.MailingState), GetSafeString(customer.MailingAddress), GetSafeString(customer.MailingAddress2));
isTripValid = PCM.PCMSAddStop(tripId, addressToValidate.Trim()) == 1;
if (!isTripValid)
{
customers.Add(customer);
}
i++;
if (i == 1000)
{
PCM.PCMSClearStops(tripId);
i = 0;
}
}
PCM.PCMSCloseServer(serverID);
PCM.PCMSDeleteTrip(tripId);
return customers;
http://msdn.microsoft.com/en-us/library/hh156513.aspx应该能够提供帮助。 –
异步不是我正在寻找的。即使UI线程被锁定了几分钟,我也没有问题。只要速度很快。现在需要60分钟。 :( –