关于一个队列和锁的问题,望请高手来帮忙解答一下哈
题目如下:我声明了2个队列对象Queue<callout_presskey> callA = new Queue<callout_presskey>(); 和Queue<callout_presskey> callB = new Queue<callout_presskey>();callout_presskey是一个类,访问完数据后,这2个队列都是有值的,现在启动了这2个线程,然后调用了同一个方法UpdateParameter(callout_presskey call),方法如下private void UpdateParameter(callout_presskey call)//callout_presskey calls
{
try
{
lock (call)
{
string sql = " update callout_presskey set state='PKF' where seq_nbr=" + call.Seq_nbr;
DBHelper.ExecuteNonQuery(sql, CommandType.Text);
sql = " insert into T2 (sessionid,oper_id,ti_area,ti_phone,task_serial,app_uid,press_key,press_key_valid,press_time,state,state_time,state_desc,id) select '" + call.Sessionid + "','" + call.Oper_id + "','" + call.Ti_area + "','" + call.Ti_phone + "','" + call.Task_serial + "','" + call.App_uid + "','" + call.Press_key + "','" + call.Press_key_valid + "','" + call.Press_time + "','" + call.State + "','" + call.State_time + "','" + call.State_desc + "'," + call.Seq_nbr + " from callout_presskey where seq_nbr=" + call.Seq_nbr;
DBHelper.ExecuteNonQuery(sql, CommandType.Text);
}
}
catch (Exception ex)
{
_ilog.Error(ex);
}
}
但是为什么插入数据库里的时候都是重复的,请问一下高手们,如何解决呀,我在网上找了一下,说加一下锁就行了,可是我加了呀,为啥不管用呢,难道是加错地方了?请高手门解决一下啊,O(∩_∩)O谢谢 --------------------编程问答-------------------- 请大侠们帮帮忙啊 --------------------编程问答-------------------- call是全局的吗,如果不是,你的lock无效 --------------------编程问答-------------------- 帮忙顶一下! --------------------编程问答--------------------
call不是全局的,是线程调用有一个方法,那个方法调用这个方法的时候直接就赋了一个对象callA.Dequeue(),一定要声明全局的吗?
补充:.NET技术 , .NET Framework