gpt4 book ai didi

c#-4.0 - SqlConnection 与并行编程

转载 作者:行者123 更新时间:2023-12-02 19:19:28 26 4
gpt4 key购买 nike

这是我现有的代码,它将一些数据保存到多个表

using (SqlConnection conn = new SqlConnection("myConnString"))
{
DoWork1(conn);
DoWork2(conc);
DoWork3(conn);
}

为了加快我的代码速度,所以我尝试获得 .net TPL 支持,并按如下方式重新挂起我的代码

using (SqlConnection conn = new SqlConnection("myConnString"))
{
ParallelOptions pw = new ParallelOptions();
pw.MaxDegreeOfParallelism = Environment.ProcessorCount;

Parallel.Invoke(pw,()=> DoWork1(conn),()=> DoWork2(conc),()=> DoWork3(conn));
}

但这会从我的数据访问层中的 ExecuteNonQuery() 方法引发内部连接 fatal error 异常。我的并行方法是否错误?

最佳答案

嗯,有一些方法可能可以使用MARS来使其工作。 - 但我建议采用不同的方法。 (我不知道MARS是否支持跨多个线程使用同一个连接,尽管它允许多个并发操作。)

不要尝试在所有并行任务中重用一个连接,而是让每个任务为自己打开(和关闭)一个连接,并让连接池处理其效率方面。无论您是否使用并行性,这都是 .NET 中的一般最佳实践:打开连接,做一些工作,关闭连接。

关于c#-4.0 - SqlConnection 与并行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com