Я разделяю операцию базы данных только для чтения на несколько частей (каждый из которых читает подмножество очень большого объема данных, анализирует его и записывает результаты в файл на диске).
Каждый кусок выполняет выбор (в таблицу данных) в новом потоке .net (с использованием делегата и BeginInvoke)
Существует больше подмножеств данных, чем доступных подключений в пуле, поэтому, когда у меня заканчиваются подключения, перед тем как освободить первое, последующие запросы на подключение ставятся в очередь ... до истечения времени ожидания подключения, и тогда я получаю исключение тайм-аута.
Как мне, A) запретить исключение тайм-аута соединения, когда все соединения в пуле используются, или B) обнаружить, что они все используются, прежде чем я даже запросить другое, чтобы я мог ждать, пока оно не будет доступно, прежде чем спрашивать?