C# 多线程:多个线程调用一个方法往数据插数据,结果数据乱了!

cyshiwo01 2014-04-28 04:53:45
...全文
754 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2014-04-29
  • 打赏
  • 举报
回复
楼主不谈数据谈线程,看来是不想解决问题了,线程是无辜的。
肿肿线状 2014-04-29
  • 打赏
  • 举报
回复
声明一个lock 然后锁定你的插入数据库代码
object locked = new object();

public void 方法()
{
lock(locked)
{
//你的具体操作数据代码
...
...
...
}


}
jwh2004 2014-04-29
  • 打赏
  • 举报
回复
多线程的话,订单号最好程序内自己的逻辑生成。如果是数据库自动编号生成,就要锁定数据表或lock锁定程序的其他线程
cyshiwo01 2014-04-29
  • 打赏
  • 举报
回复
引用 16 楼 tcmakebest 的回复:
楼主不谈数据谈线程,看来是不想解决问题了,线程是无辜的。
我知道是数据处理的问题。就是不知道要怎么解决
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复
引用 11 楼 xdashewan 的回复:
看你手动启的进程不象是服务接受方式啊
不太明白你说的厄。
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复
引用 10 楼 xdashewan 的回复:
你的数据源怎么获得的?
数据源是那个绑定订单啊。
xdashewan 2014-04-28
  • 打赏
  • 举报
回复
看你手动启的进程不象是服务接受方式啊
xdashewan 2014-04-28
  • 打赏
  • 举报
回复
你的数据源怎么获得的?
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复
引用 3 楼 a01589 的回复:
引用 2 楼 cyshiwo01 的回复:
[quote=引用 1 楼 xdashewan 的回复:] 什么叫数据乱了,你想要什么结果,而且没人和你保证先启动的线程就一定会先执行完毕
乱了就是线程调用的方法里面数据处理并行了。然后插到数据里的数据全乱了!
多线程得用 lock 去控制的吧[/quote] 大神,可否帮我看下代码。对多线程我实在不是太熟!谢谢
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复
引用 7 楼 xdashewan 的回复:
第一点不推荐用线程去insert数据库,提高数据插入速度的方法是批量执行sql而不是线程,如果是别人教你的,你可以去揍他。 第二点,我没看过你全部代码,你的程序里既有插入又有查询,又是线程并行,一定要记得有事务。 第三点,线程里的用于计数类全局最好别用。 对于你来说,最好的的改法莫过于舍弃多线程插入数据这种荒唐的念头
恩恩。但是我程序的需求就是要实时往数据库插入数据。大神,依你看我要怎么修改我的代码呢。
xdashewan 2014-04-28
  • 打赏
  • 举报
回复
第一点不推荐用线程去insert数据库,提高数据插入速度的方法是批量执行sql而不是线程,如果是别人教你的,你可以去揍他。 第二点,我没看过你全部代码,你的程序里既有插入又有查询,又是线程并行,一定要记得有事务。 第三点,线程里的用于计数类全局最好别用。 对于你来说,最好的的改法莫过于舍弃多线程插入数据这种荒唐的念头
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复
引用 4 楼 xdashewan 的回复:
你只有开启线程的代码,不能说明问题
引用 3 楼 a01589 的回复:
引用 2 楼 cyshiwo01 的回复:
[quote=引用 1 楼 xdashewan 的回复:] 什么叫数据乱了,你想要什么结果,而且没人和你保证先启动的线程就一定会先执行完毕
乱了就是线程调用的方法里面数据处理并行了。然后插到数据里的数据全乱了!
多线程得用 lock 去控制的吧[/quote]具体要怎么处理线程调用的方法里面呢。求指导!
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复

线程调用的方法里面的代码是这个
xdashewan 2014-04-28
  • 打赏
  • 举报
回复
你只有开启线程的代码,不能说明问题
  • 打赏
  • 举报
回复
引用 2 楼 cyshiwo01 的回复:
引用 1 楼 xdashewan 的回复:
什么叫数据乱了,你想要什么结果,而且没人和你保证先启动的线程就一定会先执行完毕
乱了就是线程调用的方法里面数据处理并行了。然后插到数据里的数据全乱了!
多线程得用 lock 去控制的吧
cyshiwo01 2014-04-28
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
什么叫数据乱了,你想要什么结果,而且没人和你保证先启动的线程就一定会先执行完毕
乱了就是线程调用的方法里面数据处理并行了。然后插到数据里的数据全乱了!
xdashewan 2014-04-28
  • 打赏
  • 举报
回复
什么叫数据乱了,你想要什么结果,而且没人和你保证先启动的线程就一定会先执行完毕

110,500

社区成员

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

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

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