我需要多线程,专门用于数据插入,
不知道怎么构架,请大家帮忙
我是这样写的,但是用的是单线程
public data
{
   private DataTable dt;
   public AppendToDb(BusMessage Msg)
   {
        DataMutex.WaitOne();
       System.Data.DataRow dRow = dt.NewRow(); 
        try
        {
            dRow["ID"] = 1;
            dRow["Track_Time"] = '2006-09-11 17:50:44'
            dt.Rows.Add(dRow);
            if(i>1000)
            {
               dataAdapter.Update(DS, "Trace");
            }
       }
       finally
       {
          DataMutex.ReleaseMutex();
       }   }
}
请大家帮忙。

解决方案 »

  1.   

    楼主的意思是要开一个线程只用来处理数据插入吗
    把这个data直接放到一个线程里面运行不就可以了吗
      

  2.   

    我原来是这样写的
    public class dueMsg
    {
    data _data = new data()
    _data.AppendToDb(Msg);
    }
    我在duemsg类里面怎么开一个线程处理数据?
      

  3.   

    public class dueMsg
    {
      private data _data;
      public dueMsg(data _data)
      {
        this._data = _data;
      }
      private  void append()
     {
        _data.AppendToDb(Msg);
     }
     public  void appenddata()
     {
       Thread th=new Thread(ThreadStart(appenddata));
       th.Start();
     }
    }
    大概就这样吧-,-
      

  4.   

    当然可以把 Thread th 作为类的成员
    这样就可以控制th了
      

  5.   

    我是这样写的,不知道对不对
    public class RecevMsg
    {   _dataToDb = new DataToDB();   private receive(Message Msg)  //接收到数据
       {
           dataToDb.AppendMessage(Msg)
       }
    }public DataToDB
    {
       public void AppendMessage(Message msg)
       {
           DataMutex.WaitOne();
           DataRow row = getNewRow();
            SetRow(row, msg);
            AddRow(row);
            DataMutex.ReleaseMutex();
        }
        private void AddRow(DataRow row)
        {
           tableOne.Rows.Add(row);
            iInsert++;
            if (iInsert >= MaxRows)
            {
                    iInsert = 0;
                    WriteDataToDB();
             }
        }
             private void WriteDataToDB()
            {
                Thread _threadInsert;
                try
                {
                    _threadInsert = new Thread(new System.Threading.ThreadStart      (UpdateToDb));
                    _threadInsert.Start();
                }
            }      private void UpdateToDb()
           {
                dataAdapter.Update(tableOne);
               tableOne.Clear(); 
           }
    }请大家看看对不对,