如何增加多线程中线程的数量增加到10?不影响更新表?

tys101582 2011-02-16 05:11:58
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);
}

}




}

...全文
134 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tys101582 2011-02-18
  • 打赏
  • 举报
回复
哦,那怎么提升更新或提交速度
joyweimao 2011-02-17
  • 打赏
  • 举报
回复
同一个事情,分多个线程,并不是一个很好的设计

数据完整性比一时的性能更重要!
tys101582 2011-02-17
  • 打赏
  • 举报
回复
不能沉了啊,还请高手指点啊
tys101582 2011-02-17
  • 打赏
  • 举报
回复
我现在的速度比我原来的不是多线,实际上感觉快了很多,其实也快了不少
fenlin1985 2011-02-17
  • 打赏
  • 举报
回复
根本就不需要多线程呀,使用TIMER类实现,快慢就看你设置TIMER的时间了,例如
你设置1分钟一次觉得慢了,就设成3秒一次,不就快了
tys101582 2011-02-17
  • 打赏
  • 举报
回复
怎么改一下呢
tys101582 2011-02-16
  • 打赏
  • 举报
回复
我是先在内存中更新sendyorn,然后又直接更新的库中的state.

bdmh 2011-02-16
  • 打赏
  • 举报
回复
线程并不一定会提高速度,往往会降低速度,因为线程都是串行的,不是并行的,只有在cpu足够多的情况下才行
l171147904 2011-02-16
  • 打赏
  • 举报
回复
你的思路可以!!! 表做个排序!
线程1,更新 1%~20% 的记录, 线程2更新 21~40%记录。。。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧