C# 多线程信息
我正在尝试使用线程,但我有一些问题(我是线程初学者) 我的密码是这样的。我有一个表单中的数据集,我想从数据库和克里特适配器中获取一些tablequery,并在表单中填充数据集C# 多线程信息,c#,multithreading,C#,Multithreading,我正在尝试使用线程,但我有一些问题(我是线程初学者) 我的密码是这样的。我有一个表单中的数据集,我想从数据库和克里特适配器中获取一些tablequery,并在表单中填充数据集 Dataset mydataset=new DataSet(); private void Form_Load(object sender,eventargs e) { SqlConnection con=new SqlConnection("constring"); SqlDataAdapter adap
Dataset mydataset=new DataSet();
private void Form_Load(object sender,eventargs e)
{
SqlConnection con=new SqlConnection("constring");
SqlDataAdapter adap=new SqlDataAdapter("select * from Tables");
DataTable dt=new DataTable();
adap.Fill(dt);
foreach(DataRow dr in dt.Rows)
{
ThreadStarter mystarter=delegate{ CreateTable(dr); };
Thread mythread=new Thread();
mythread.Start();
}
}
void CreateTable(DataRow dr)
{
SqlDataAdapter adap2=new SqlDataAdapter(dr["Query"].toString(),con);
ada2.Fiil(myDataSet);
}
当我使用这段代码时,我得到一个错误,比如“已经有SqlDataReader for closed first”
我能做什么?我想你需要解释一下你想在这里做什么。看起来您正在打开一个表列表,然后尝试并行加载所有这些表中的所有数据,但都加载到同一个对象中。。。那没有多大意义
值得一提的是,错误似乎在于您正在创建多个数据适配器,这些适配器将同时使用同一个数据库连接—您不能这样做。如果您真的想并行加载所有这些数据,您需要与数据库建立多个连接。A
SqlConnection
连接一次只支持一个命令(和一个读卡器)。多个线程不能同时访问它。因此,您需要在每个线程中创建一个separaeSqlConnection
实例。“我得到了一个类似这样的错误”-告诉我们您得到的实际错误肯定不会太麻烦吧?我想知道粘贴的代码是如何编译的,甚至是如何工作的。ThreadStarter应该是ThreadStartDelegate,new Thread()应该是new Thread(mystarter),您正试图使用以形式_load()声明的“con”变量,并且您正在另一个线程中调用的另一个函数中访问它。