关于C#多线程效率问题

莫北_1 2013-06-24 12:59:35
如题 :
我定义了一个委托执行一个A 执行方法B(B中主要就是循环遍历表中的行),线程T 执行委托A

private void B()
{
for(i=0;i<....)
{
DataRow row=table.rows[i];
.....;
}
}

我发现随着进程慢慢的运行,效率好像越来越低,递减状态,最开始每秒钟可以执行50多个行,到最后每秒钟只能执行1 2行,请问这个是为什么? 求大神指点.
...全文
352 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Hightest用得比较少,用了也不一定就起作用 你在遍历dt.Rows时调用了DoImportData Tick里也调用了DoImportDate差点看错 不知道你那些方法是在什么情况下调用到,先梳理一下你的业务流程,
  • 打赏
  • 举报
回复
会不会是你常见的线程太多,而没有释放掉?你在一个事件中处理完的东西,资源要释放掉哦~~ using 也是自动释放资源的一种,可以的话,加上去试试看
莫北_1 2013-06-25
  • 打赏
  • 举报
回复


这是部分代码段,
执行之后刚开始一段时间每秒钟可以循环50 60行数据
后面渐渐递减 到最后一秒钟只能循环2行左右的数据..这是为什么呢.
莫北_1 2013-06-25
  • 打赏
  • 举报
回复
我就是用Thread ....
橘色的喵 2013-06-25
  • 打赏
  • 举报
回复
用Thread 吧,应该好点
橘色的喵 2013-06-25
  • 打赏
  • 举报
回复
在下面的情况下,使用 Thread 对象: • 需要具有特定优先级的任务。 • 有可能运行很长时间的任务(这样可能阻塞其他任务)。 • 需要确保只有一个线程可以访问特定的程序集。 • 需要有与线程相关的稳定标识。
橘色的喵 2013-06-25
  • 打赏
  • 举报
回复
timer_tick!!!! 假如是1秒执行一次,你是不是每次都要创建一个新的线程?

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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