创建新的数据表后,数据集未将其应填充的50列填充到数据表中,我得到了一个空的数据表。
List<DataTable> test = new List<DataTable>();
foreach (string currentconstring in constrings)
{
started = false;
DataTable dt = new DataTable();
DataSet _dataSet = new DataSet();
test.Add(dt);
Thread connectthread = new Thread(() =>
{
started = true;
DataTable localdt = dt;
try
{
// access the database
MySqlConnection mySqlconnection = new MySqlConnection(currentconstring); //Connects to the MySQL database with the current connection string
mySqlconnection.Open();
MySqlCommand SqlCommand = new MySqlCommand(_sqlQuery, mySqlconnection); //Sends the specified query to the server
MySqlDataAdapter SqlDataAdapter = new MySqlDataAdapter(SqlCommand);
SqlDataAdapter.Fill(_dataSet); //Fill Dataset
localdt = _dataSet.Tables[0];
mySqlconnection.Close();
}
catch (Exception)
{
}
});
答案 0 :(得分:1)
您已经创建了一个线程并向其传递了一个委托(函数),但是尚未启动该线程。
尝试在声明线程后放入connectthread.Start();
。
您可能需要等待线程完成,因此可能必须使用Thread.Join()
。
您可能要使用async/await
,因为这比自己创建线程要好,而且您正在共享一个正在写入的数据结构,而无需使用locks
。使用多线程时,请检查常规问题。