我正在循環來自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分鐘。 :( –