如何在应用程序有多个呼叫时管理连接池限制?

时间:2015-08-21 05:53:21

标签: c# mysql

我正在使用C#.net处理邮件演示应用程序。我得到错误,因为我超过了最大连接的限制。 在我的情况下,我需要逐个插入数据库到数据库,并在计时器的基础上经常检索。 它可能有5-10个邮件帐户,每个帐户可能有数千封电子邮件。 建议我管理sql连接的方法。

2 个答案:

答案 0 :(得分:0)

你必须做三件事:

1.在连接字符串中包含以下元素:

pooled=true;Max Pool Size=100;

2.仅在连接状态关闭时打开新连接:

 If dbCon.ConnectionState<>ConnectionState.Open Then
     dbCon.Open()
 End If

3.避免在循环内打开新连接。如果你使用循环

答案 1 :(得分:0)

获取Nuget包:https://www.nuget.org/packages/Nelibur.Sword

ITinyThreadPool threadPool = TinyThreadPool.Create(x =>

    {
        x.MaxThreads = 2;
        x.MultiThreadingCapacity = MultiThreadingCapacity.Global;
    });

然后只需使用此threadPool来处理数据库插入。另外,这种方式你不依赖于数据库池。

threadPool.AddTask(() => Insert(document))