在這裏,我使用多線程和LINQ到SQL。在使用多線程時在數據庫中插入行?
在這裏,我上傳我的代碼片段:
public class PostService
{
MessageRepository objFbPostRespository = new MessageRepository();
public void callthreads()
{
for (int i = 0; i < 100; i++)
{
Thread th = new Thread(postingProcess);
th.Start();
}
}
public void postingProcess()
{
objFbPostRespository.AddLog("Test Multithread", DateTime.Now);
}
}
消息庫類
class MessageRepository
{
DataClassesDataContext db_Context = new DataClassesDataContext();
public void AddLog(string Message, DateTime CurrentDateTime)
{
FbMessgaeLog FbMessage = new FbMessgaeLog
{
Message = Message,
Time = CurrentDateTime
};
db_Context.FbMessgaeLogs.InsertOnSubmit(FbMessage);
db_Context.SubmitChanges();
}
}
當我運行無緒那麼它的做工精細之後包括螺紋,我得到了以下錯誤信息:
錯誤:具有相同鍵的項目已經已被添加。
在此先感謝... :)
你的數據庫在這裏用什麼作爲它的關鍵? – Jens 2011-04-15 13:13:18
@Jens我會認爲它是一個數據庫標識列,這是主要問題 – Manatherin 2011-04-15 13:42:31
您的要求是什麼使您選擇多線程方法?你不能使用隊列來推送項目以便立即寫入和返回,並讓後臺工作人員按順序執行這項工作嗎? – 2011-04-15 14:03:40