现在我访问到一定程度后提示连接已关闭,估计肯定是要lock锁,但是锁哪儿呢?》
追答调试的时候会出现这种情况。你发布了就不会了
追问你有没有例子啊?另外,比如我一个UDP端口接收数据,要不要用多线程对接收数据进行处理,如果我用单线程,这个端口同时受到2个不同的用户发过来的数据,会不会冲突?
追答你担心的是数据库插入的并发处理吧。例如我库存商品10个,你突然这一秒有100个人点购买,怎么处理这个并发冲突问题。跟多线程无关。
也就是说你每个用户点击这个按钮,都是占用一个线程的。而这个按钮触发的事件里面有开子线程,相当于每个客户都会开子线程。不然你一台服务器一次只能接受一个用户的请求,这明细不可能嘛。你想的问题跟多线程没啥关系。网上很多例子,你先多线程write出1和2。后面的都很好理解。只是说子线程不继承主线程的一些东西,具体是很细的东西了。
c# 多线程访问数据库
1共用一个连接就可以 2其实一样可以用lock实现,把数据库操作写成一个函数,函数内加lock。c#会安排他们排队 比如 private static object privateObjectLock = new object();public static xxoo(){ lock(privateObjectLock){ \/\/数据操作语句 } } } 你在一个函数里实现数据库操作。然后线程操作数据库...
c#编程中,怎样使用多线程处理数据库读取的信息
\/\/你分给5个线程 他也不是同时出来的,多线程还是要等CPU闲下来才能工作的。。。\/\/非要这样做 参考如下 给你举个例子 取第二条记录。Thread threadGetTop2=new Thead(new ThreadStart(GetTop2));threadGetTop2.Start();private void GetTop2(){ \/\/这里用ADO.NET打开连接 string sql="se...
C#多线程并发查询数据库,能实现真正的并发查询么(c罗)
在ado.net2.0中可用异步命令试试。为了启用异步命令必须在连接字符串中把Async属性设置为true,以下是一个异步操作的例子:\/\/Beginexecutingthecommand ar=cmd.(new(ProcessData),cmd);启动异步操作以后,可以不管它而做任何其他工作。在该操作结束时调用指定的回调函数。回调函数如下:publicvoidprocessData(...
C#多线程编程实例
)当一个线程正在写入数据时 其他线程不能写 也不能读 )当一个线程正在读入数据时 其他线程不能写 但能够读 在数据库应用程序环境中经常遇到这样的问题 比如说 有n个最终用户 他们都要同时访问同一个数据库 其中有m个用户要将数据存入数据库 n m个用户要读取数据库中的记录 很显然 在这个环境中...
C#多线程写数据库
首先对数据库(尤其是Access)使用多线程大多不会提高效率(除非SQL中有耗时但不好资源的操作,如T-SQL中休眠之类的语句)。建议楼主:使用队列,将要执行的SQL语句放入队列中(如:System.Collection.Queue或ArrayList),然后用一根线程一条一条执行,另外Access不支持事物回滚只有自己想办法实现了。滥用多...
C#实现多线程读取同一张数据表,用户获取不重复记录,怎么实现!
例如:表中有个字段 读取时间。当这个客户读取10条数据的时候,更新读取时间为当前时间。然后下个客户读取的时候,判断时间在半个小时内,没有更新的数据。就OK了。不过这个也有一点不好的地方就是 很可能半小时后 第一个客户还在使用这十条数据。如果是修改数据的话 楼主可以 把数据库表使用锁定功能,...
c# 静态类的多线程访问问题
可以同时被访问,但是这种处理方式你需要注意线程同步问题,如果你的静态方法操作同一个数据源,可能会有问题,一般都是考虑加线程锁来处理
c#socket多线程与数据库同时读写的连接问题
加个判断 if (SqlHelper.connection.State == System.Data.ConnectionState.Closed)SqlHelper.connection.Open();else (SqlHelper.connection.State == System.Data.ConnectionState.Broken){SqlHelper.connection.Close();SqlHelper.connection.Open();} ...
c#多线程写数据库的问题
写线程是不能并发的(无意义,且易死锁),可以考虑设置双队列。并发线程将接收的数据插入队列,然后用一个线程不断的处理将另一个队列的数据写入磁盘,写入工作的线程处理完队列A后和并发接收线程切换一下,写队列B的数据,并发接收线程向A中写数据,这是简单的,也可以设置三个队列切换。甚至更多。看...
初学C#,现有 多线程处理数据问题: 有1000条记录,每条记录都要这样处理...
你的程序还能正常运行,而不会“卡死”。那么,你就只需要创建一个线程就可以了。另外,你所说的“每条记录都要读取”,一定不能循环1000次来读取,循环连续访问数据库是编程的大忌。一次性读取,然后在程序里循环分析,最后将分析结果统一的一次性保存数据。