c#求一段线程循环思路代码

netboygg 2014-07-04 10:11:09
现在有这样一个需求:
数据库2张表,依据表b里某个字段count数循环去操作表a,并对表a某个字段打上标记:成功更新为1 不成功及没更新为0。
这个操作一点击启动按钮即开始,直到点取消按钮或关闭窗体。
这个操作会依据表b的里某个字段count和启动相应的线程数,每个线程依据表a里标记字段为0的不停循环,一直不停。
当遇到线程异常的时候需要重启该线程。


求解决代码或思路哈。谢谢~~~
...全文
228 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
netboygg 2014-07-08
  • 打赏
  • 举报
回复
引用 14 楼 Z65443344 的回复:
[quote=引用 11 楼 netboygg 的回复:] [quote=引用 10 楼 Z65443344 的回复:] 消费机用的什么端口?如果不是以太网,多线程根本毫无意义.
怎么理解?消费机是rs485,但转接的rj45口,配ip,通过ip访问,通过协议操作消费机。[/quote] 那实际上还是RS485,IP和端口只不过是网关的. 你两个(以上)线程往同一个IP和端口下发数据没问题,但是网关那头协议转换后还是同一个RS485,效率不会提高,而且有可能造成数据冲突,乱码.[/quote] 没有2个以上的线程写同一个ip地址,就是想分开100多个线程同时往不同的机器里写名单。
superwang007 2014-07-04
  • 打赏
  • 举报
回复
数据库的事情数据库处理最好,最好是做一个存储过程,程序直接调用存储过程就可以了
netboygg 2014-07-04
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
消费机用的什么端口?如果不是以太网,多线程根本毫无意义.
通讯的时候要传ip,也要传端口,至少协议是这样要求的就是接口方法。
netboygg 2014-07-04
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
消费机用的什么端口?如果不是以太网,多线程根本毫无意义.
怎么理解?消费机是rs485,但转接的rj45口,配ip,通过ip访问,通过协议操作消费机。
於黾 2014-07-04
  • 打赏
  • 举报
回复
消费机用的什么端口?如果不是以太网,多线程根本毫无意义.
xdashewan 2014-07-04
  • 打赏
  • 举报
回复
引用 7 楼 netboygg 的回复:
主要是还要去下发名单给消费机,等消费机的处理成功返回值。没有完全在数据库环境中处理。
其实你的需求就是一个如何循环给线程分配任务的问题,答案我写给你了。
netboygg 2014-07-04
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
如果只是更新表a,就像曹版说的不用线程更好。一般这种操作,在更新表a之前都会由应用程序发起N个线程进行一些处理,然后更新数据的标志位表示处理结果。 这样的操作的思路是,首先确定每个线程一次工作的数量,也就是一个线程一出处理多少条数据,所有线程使用同一个sql链接进行数据库操作,取得“未处理”数据,并把数据标志成一个"处理中"的中间状态,处理完了再去更新处理结果。
主要是还要去下发名单给消费机,等消费机的处理成功返回值。没有完全在数据库环境中处理。
netboygg 2014-07-04
  • 打赏
  • 举报
回复
引用 4 楼 netboygg 的回复:
[quote=引用 1 楼 caozhy 的回复:] 这为什么要开那么多线程呢?为什么要轮询呢?
版主好,是这样的,要给100多台消费机,更新白名单,每台消费机有1万2左右的白名单,所以要想办法同时做这件事,越快完成越好。[/quote] 在数据里的白名单中放个下发标示字段,下发了就为1,一直到没有0的为止。像这样的需求,liuchaolin 前辈说的用线程也不好,那应该怎么处理?
threenewbee 2014-07-04
  • 打赏
  • 举报
回复
引用 4 楼 netboygg 的回复:
[quote=引用 1 楼 caozhy 的回复:] 这为什么要开那么多线程呢?为什么要轮询呢?
版主好,是这样的,要给100多台消费机,更新白名单,每台消费机有1万2左右的白名单,所以要想办法同时做这件事,越快完成越好。[/quote] 开线程越多只会越慢。
netboygg 2014-07-04
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
这为什么要开那么多线程呢?为什么要轮询呢?
版主好,是这样的,要给100多台消费机,更新白名单,每台消费机有1万2左右的白名单,所以要想办法同时做这件事,越快完成越好。
xdashewan 2014-07-04
  • 打赏
  • 举报
回复
如果只是更新表a,就像曹版说的不用线程更好。一般这种操作,在更新表a之前都会由应用程序发起N个线程进行一些处理,然后更新数据的标志位表示处理结果。 这样的操作的思路是,首先确定每个线程一次工作的数量,也就是一个线程一出处理多少条数据,所有线程使用同一个sql链接进行数据库操作,取得“未处理”数据,并把数据标志成一个"处理中"的中间状态,处理完了再去更新处理结果。
md5e 2014-07-04
  • 打赏
  • 举报
回复
不是线程多就快的,cup一次只能处理一个线程,线程也是要排队的
threenewbee 2014-07-04
  • 打赏
  • 举报
回复
这为什么要开那么多线程呢?为什么要轮询呢?
於黾 2014-07-04
  • 打赏
  • 举报
回复
引用 11 楼 netboygg 的回复:
[quote=引用 10 楼 Z65443344 的回复:] 消费机用的什么端口?如果不是以太网,多线程根本毫无意义.
怎么理解?消费机是rs485,但转接的rj45口,配ip,通过ip访问,通过协议操作消费机。[/quote] 那实际上还是RS485,IP和端口只不过是网关的. 你两个(以上)线程往同一个IP和端口下发数据没问题,但是网关那头协议转换后还是同一个RS485,效率不会提高,而且有可能造成数据冲突,乱码.

110,539

社区成员

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

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

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