在使用c#中的TPL Parallel.ForEach()方法执行多个线程时遇到问题。多处理访问数据库,我还使用using语句包装每个操作,以便在每次执行后处理连接。
我得到的错误说:查询处理器无法为并行查询执行启动必要的线程资源
经过大量的谷歌搜索后,由于资源过于忙碌或导致内存泄漏,SQL资源不足。
我还尝试在Parallel.ForEach()中设置ParallelOptions参数并设置 MaxDegreeOfParallelism = 2 ,但这没有帮助。即。
Parallel.ForEach(customerNumbers, cno =>
{
using (var ctx = new MyContext())
{
// do database call
}
}, new ParallelOptions { MaxDegreeOfParallelism = 2 });
有人能告诉我如何解决这个问题吗?
答案 0 :(得分:3)
问题不在于C#,而在于你的SQL Server。您的SQL服务器拒绝多个同时呼叫。
请确保: