当前位置:编程学习 > C#/ASP.NET >>

关于一个队列和锁的问题,望请高手来帮忙解答一下哈

 题目如下:我声明了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无效 --------------------编程问答-------------------- 帮忙顶一下! --------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
call是全局的吗,如果不是,你的lock无效


call不是全局的,是线程调用有一个方法,那个方法调用这个方法的时候直接就赋了一个对象callA.Dequeue(),一定要声明全局的吗?
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,