基本要求:主线程建立一个主连接,在多个子线程中,每个子线程分别建立自己的DataAdapter和DataSet,不同的子线程操作的是同一个数据表,但是总是报错,不知何故.

解决方案 »

  1.   

    Mutex,多个线程调用时要锁起来的,
      

  2.   

    to Ninputer(装配脑袋) :
    工作需要,临阵跑佛脚,不知该如何处理你所说的"同步",望指教.
    我的基本操作如下,现在是还没等我对数据库进行什么操作,只查询都出问题了,代码如下:private Thread[] m_thdX = new Thread[4];

    //到数据库的主连接
    private SqlConnection sqlConn;
    //初始化程序
    private void Form1_Load(object sender, System.EventArgs e)
    { string strTmp = "DataBase=dbTest;Data Source=192.168.1.28;User ID=sa;pwd=sa";
    sqlConn = new SqlConnection(strTmp);
    sqlConn.Open();

    }//开始按钮,创建多线程
    private void btnStart_Click(object sender, System.EventArgs e)
    {
    for(int i = 0;i < 4;i++)
    {
    this.m_thdX[i] = new Thread(new ThreadStart(Test));
    m_thdX[i].Start();
    }}//线程方法
    public void Test()
    { string strSlct = "select top 2 * from Test where Status = 0";
    SqlDataAdapter sqlDA = new SqlDataAdapter();
    sqlDA.SelectCommand = new SqlCommand(strSlct,sqlConn);
    DataSet ds = new DataSet();
    sqlDA.Fill(ds);
    }
      

  3.   

    上面的代码中,一到 sqlDA.Fill(ds) 这个地方就报错,不知为何.
      

  4.   

    because you are using the same connection object! and you will be updating the same table, you are probably going to have a lot of problemstry to use multiple database connections, alsostatic Object MyObject = new Object();...public void Test()
    {
             lock(MyObject)
             {
       string strSlct = "select top 2 * from Test where Status = 0";
      SqlDataAdapter sqlDA = new SqlDataAdapter();
      sqlDA.SelectCommand = new SqlCommand(strSlct,sqlConn);
       DataSet ds = new DataSet();
        sqlDA.Fill(ds);
              }
    }
      

  5.   

    多谢 saucer(思归) , Ninputer(装配脑袋), lampson123(微软) ,uscool(小小风) ,xjaifly(tiantian),  多谢大家,问题已经解决,通过问题知道了如何处理线程同步,(虽然很简单很基本,可以前不会,大家见笑了).再次多谢大家