當該代碼奔跑告訴我此錯誤: 錯誤「不設置到對象的實例對象引用」發生在第一行=>MinorDBDataContext mdc = new
...C#並行循環問題
而且還與串行爲「 for(int i; i < 1005; i ++){}「正常工作。
有什麼問題?
Thread.CurrentThread.Priority = ThreadPriority.Highest;
var query = from M in new MajorDBDataContext().User_Accounts select M;
List<User_Account> Ulist = query.ToList();
string d = DateTime.Now.ToString();
int c = 0;
string temp ="";
Parallel.For(0, 1005, (i,loop) =>
{
try
{
MinorDBDataContext mdc = new MinorDBDataContext(_Filings.OnServerRepository(Ulist[i].user_Sys_DBPath));
GoodJob(mdc, temp, i);
DA.Page page = mdc.Pages.Single();
temp += mdc.Minor_Users.Take(1).SingleOrDefault().Minor_User_Email;
temp += mdc.Minor_Users.Take(1).SingleOrDefault().Minor_User_Name;
temp += mdc.Minor_Users.Take(1).SingleOrDefault().Minor_User_Family + i.ToString();
}
catch { }
});
append(temp);
考慮使用StringBuilder而不是String來實現。 – 2011-05-19 12:03:31
使用StringBuilder可能無法解決多個線程同時向StringBuilder添加的問題,從而在StringBuilder或損壞的字符串中產生不一致的狀態。 StringBuilder中的各個Append語句可能會在最好的情況下被無序地應用。 – 2011-05-19 12:05:23
@Colin:對不起,我並沒有試圖回答這個問題。我只是指出字符串concat不會爲這裏的表現創造奇蹟。我應該說清楚。謝謝。 – 2011-05-19 12:09:02