开发随笔-处理.net 多线程访问数据库问题
2012-03-14 11:16
399 查看
我的上篇文章的问题,经过这两天的努力终于有了结果
http://blog.csdn.net/hliq5399/article/details/7345377
我采用.net ThreadPool 确实不能解决我的问题.
public void ProcessQueue()
{
while (CCHelper.GetQueueCount() > 0)
{
for (int i = 0; i < iMaxThreads; i++)
{
WaitCallback a = new WaitCallback(ProcessOneQueue);
ThreadPool.QueueUserWorkItem(a, null);
Thread.Sleep(5000);
}
}
}
public void ProcessOneQueue()
{
//处理队列,提交网关.
}
Thread.Sleep(5000) 是不能解决我的问题的,这个太不保险了,线程池主要是不能灵活控制,我设断点调式发现只要访问数据库的地方,就不能继续跟踪断点了.
于是我找了资料,发现很多人都是说SqlConnection多线程是需要单独创建的.
http://blog.csdn.net/hliq5399/article/details/7350466
详细看了我的代码后,发现SqlConnection是单独创建的.
后面决定手工创建线程,来解决问题:Thread[] threads = new Thread[iMaxThreads];
for (int i = 0; i < iMaxThreads; i++)
{
threads[i] = new Thread(new ThreadStart(ProcessOneQueue));
threads[i].Start();
}
同事介绍说,可以用VS2010&.Net 4.0 之并行运算(Parallel)(For、Foreach)来解决
可以看我转载的这篇文章:
http://blog.csdn.net/hliq5399/article/details/7352166
这篇是后面找到的,大家可以看看
http://www.cnblogs.com/Henllyee/archive/2010/05/01/ParallelProgaramming1.html
时间的关系,个人感觉还没有完全深入,后续再跟.
http://blog.csdn.net/hliq5399/article/details/7345377
我采用.net ThreadPool 确实不能解决我的问题.
public void ProcessQueue()
{
while (CCHelper.GetQueueCount() > 0)
{
for (int i = 0; i < iMaxThreads; i++)
{
WaitCallback a = new WaitCallback(ProcessOneQueue);
ThreadPool.QueueUserWorkItem(a, null);
Thread.Sleep(5000);
}
}
}
public void ProcessOneQueue()
{
//处理队列,提交网关.
}
Thread.Sleep(5000) 是不能解决我的问题的,这个太不保险了,线程池主要是不能灵活控制,我设断点调式发现只要访问数据库的地方,就不能继续跟踪断点了.
于是我找了资料,发现很多人都是说SqlConnection多线程是需要单独创建的.
http://blog.csdn.net/hliq5399/article/details/7350466
详细看了我的代码后,发现SqlConnection是单独创建的.
后面决定手工创建线程,来解决问题:Thread[] threads = new Thread[iMaxThreads];
for (int i = 0; i < iMaxThreads; i++)
{
threads[i] = new Thread(new ThreadStart(ProcessOneQueue));
threads[i].Start();
}
private object obj = new object(); public void ProcessOneQueue() { lock(obj) { //处理队列,提交网关 } }ok,问题解决.
同事介绍说,可以用VS2010&.Net 4.0 之并行运算(Parallel)(For、Foreach)来解决
可以看我转载的这篇文章:
http://blog.csdn.net/hliq5399/article/details/7352166
这篇是后面找到的,大家可以看看
http://www.cnblogs.com/Henllyee/archive/2010/05/01/ParallelProgaramming1.html
时间的关系,个人感觉还没有完全深入,后续再跟.
相关文章推荐
- web策略类游戏开发(三) 多线程下数据库并发更新的处理
- c#多线程访问控件问题处理方法一
- .NET应用访问数据库之数据库的开销问题 后续篇(一)缓存的使用
- GOOD单例模式,多线程同时访问一个实例对象问题的处理,加lock
- webpart中访问SQL 2005 数据库问题的处理办法
- GIS开发随笔(2)——关于建立GIS数据库的几个问题
- JNIk开发过程中遇到的多线程处理问题
- 关于数据库长度限制和.NET中处理正确长度等问题
- 多线程程序处理内存泄漏和访问冲突问题
- .NET应用访问数据库之数据库的开销问题 后续篇(二)通信量和通信次数的较量
- WinCE5.0移动平台开发笔记(c#中使用多线程访问winform中控件的若干问题(zt))
- .net framwork 4.5.1 访问数据库出错的问题
- 初学.net遇到的问题:数据库访问连接问题
- .net开发连接Oracle数据库注意问题
- 一起谈.NET技术,数据库访问的性能问题与瓶颈问题
- .NET中访问Oracle数据库链接:ORA-02041: client database did not begin a transaction 问题的处理。
- qt 多线程访问数据库问题
- .Net数据库访问问题:已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
- .NET 部署问题之完美解决方案总结(访问IIS元数据库失败,找不到页面,应用程序错误解决)
- .Net+MySQL的开发(数据库访问)