我有2条子线程,T1负责15秒读取数据库,T2 1小时读一次数据库,在T1,T2中分别对数据库操作部分加上了LOCK,但是在运行很长一段时间之后,软件会死掉。排除了程序部分,我认为是死锁导致的,加上了lock还是防治不了死锁?该如何是好

解决方案 »

  1.   

    lock对象是什么?表?变量?
    软件卡住,你可以考虑调试模式运行,卡住时点暂停看停止点。
      

  2.   

    你去MSDN上一下锁的对象问题, 
    不用固定字符串
    不用类型
    。否则
      

  3.   

    应该不是lock的问题,我1000多个线程读数据库加上lock都不会有问题,你就两个线程能出什么问题啊!
      

  4.   

    lock(this)
    {
       读取数据库数据!
    }
    如果不做任务措施的话T2就报错:数据库已打开!因为T1正在读取!
      

  5.   

    public static SqlConnection Connection
            {
                get
                {
                                    if (connection == null)
                    {
                        string strConn = "Data Source=" + Server + ";Initial Catalog=" + DataBase + ";User Id=" + UserName + ";Password=" + PassWord;
                        connection = new SqlConnection(strConn);
                        connection.Open();
                    }
                    else if (connection.State == ConnectionState.Closed)
                    {
                        connection.Open();
                    }
                    else if (connection.State == ConnectionState.Broken)
                    {
                        connection.Close();
                        connection.Open();
                    }
                    else if (connection.State == ConnectionState.Open)
                    {
                        connection.Close();
                        string strConn = "Data Source=" + Server + ";Initial Catalog=" + DataBase + ";User Id=" + UserName + ";Password=" + PassWord;
                        connection = new SqlConnection(strConn);
                        connection.Open();
                    }
                    return connection;
                }        }public static DataTable GetDataTable(string sql)
            {
                SqlDataAdapter sda = new SqlDataAdapter(sql, Connection);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                connection.Close();
                return dt;
            }
    我是用的现成的数据库操作类