C# ограничение пула соединений
Я знаю, что в 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;"
1 ответ
Не будет ли работать форма блокировки ресурсов с 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);
}
}
}