繁体   English   中英

C#限制池连接

[英]C# limiting the pooling connection

我知道在C#中默认池大小为100,但我想将池大小限制为20,并且必须将对db的其余请求排队,在必须消除固定时间未处理的请求之后,我尝试了以下连接字符串,并在发送了100请求一次使用邮递员,但它处理了所有请求,并且没有遇到任何异常。

connection.ConnectionString = "Server=servername;Database=dbname;Trusted_Connection=true;Connection Timeout=0;Connection Lifetime=30;Min Pool Size=0;Max Pool Size=20;Pooling=true;"

使用20个锁的资源锁定形式不起作用吗? 例如

static readonly object SomeLock = new object();
using (var lck = new CodeLock()) 
{
   var ok = lck.Lock(SomeLock, timeout) 
   // do stuff, connect to db
}

public struct CodeLock : IDisposable
{
    private object lockedObject;
    private bool lockTaken;

    public bool Lock(object someLock, int timeout)
    {
        lockedObject = someLock;
        Monitor.TryEnter(someLock, timeout, ref lockTaken);
        if (lockTaken == false)
        {
            // didn't acquire lock within timeout
            return false;
        }
        return true;
    }

    public void Dispose()
    {
        if (lockedObject == null) return;
        if (lockTaken)
        {
            lockTaken = false;
            Monitor.Exit(lockedObject);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM