【发布时间】:2011-04-15 13:01:44
【问题描述】:
这里我使用多线程和 linq to sql。
这里我上传我的代码sn-p:
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 我假设它是一个数据库标识列,这是主要问题
-
您选择多线程方法的要求是什么?你不能使用队列来推送项目以立即写入和返回,并让后台工作人员按顺序完成工作吗?
标签: sql-server multithreading linq c#-4.0