DT是事先主进程读出来放到内存中的,然后我用线程来更新或提交这个内存中的表的值?现在如何增加多线程的数量,从而达到提交更新速度?在不影响多线程更新表的情况下,个人不知怎到写了,还请高手指点一下?现在是我这样加的: Thread newthr = new Thread(new ThreadStart(getdate_datatale));
newthr.Start();
Thread newthr2 = new Thread(new ThreadStart(getdate_datatale));
newthr2.Start();
这样报错,更新表时有问题?
private void BindDatatable(string sql)
{
string comboxnew = comboBox1.SelectedItem.ToString();
try
{
con = conn();
adap = new SqlDataAdapter(sql, con); SqlCommandBuilder scb = new SqlCommandBuilder(adap);
if (dt == null)
{
dt = new DataTable();
} dt.PrimaryKey = new DataColumn[] { dt.Columns["id"] };
adap.FillSchema(dt, SchemaType.Mapped);
adap.Fill(dt); if (dt.Rows.Count > 0)
{ Thread newthr = new Thread(new ThreadStart(getdate_datatale));
newthr.Start();
}
}
catch (Exception ep)
{
errlog(ep.Message);
} }
private void getdate_datatale()
{
try
{ for (i = 0; i < dt.Rows.Count; i++)
{
try
{
dt.Rows[i]["sendyorn"] = 1; //置标识为1,为已检索
adap.Update(dt);
}
catch (Exception ep)
{
errlog(ep.Message );
} if (result.Equals(success))
{
try
{
string update = "update table SET state=1 WHERE id=" + dt.Rows[i]["id"];
update_sql(update);
log("成功提交数据");
}
catch (Exception ep)
{
errlog(ep.Message);
}
}
else
{
errlog("数据提交失败); } } }
catch (Exception ep)
{ errlog(ep.Message );
}
finally
{
try
{
con.Close();
dt.Clear();
adap.Dispose(); }
catch (Exception ep)
{
errlog(ep.Message);
} }
}
newthr.Start();
Thread newthr2 = new Thread(new ThreadStart(getdate_datatale));
newthr2.Start();
这样报错,更新表时有问题?
private void BindDatatable(string sql)
{
string comboxnew = comboBox1.SelectedItem.ToString();
try
{
con = conn();
adap = new SqlDataAdapter(sql, con); SqlCommandBuilder scb = new SqlCommandBuilder(adap);
if (dt == null)
{
dt = new DataTable();
} dt.PrimaryKey = new DataColumn[] { dt.Columns["id"] };
adap.FillSchema(dt, SchemaType.Mapped);
adap.Fill(dt); if (dt.Rows.Count > 0)
{ Thread newthr = new Thread(new ThreadStart(getdate_datatale));
newthr.Start();
}
}
catch (Exception ep)
{
errlog(ep.Message);
} }
private void getdate_datatale()
{
try
{ for (i = 0; i < dt.Rows.Count; i++)
{
try
{
dt.Rows[i]["sendyorn"] = 1; //置标识为1,为已检索
adap.Update(dt);
}
catch (Exception ep)
{
errlog(ep.Message );
} if (result.Equals(success))
{
try
{
string update = "update table SET state=1 WHERE id=" + dt.Rows[i]["id"];
update_sql(update);
log("成功提交数据");
}
catch (Exception ep)
{
errlog(ep.Message);
}
}
else
{
errlog("数据提交失败); } } }
catch (Exception ep)
{ errlog(ep.Message );
}
finally
{
try
{
con.Close();
dt.Clear();
adap.Dispose(); }
catch (Exception ep)
{
errlog(ep.Message);
} }
}
你设置1分钟一次觉得慢了,就设成3秒一次,不就快了