В основном, звонки - это информация о состоянии. Если у вас есть какие-либо открытые DataReaders, это займет много времени, чтобы произойти. Это связано с тем, что ваши DataReaders содержат только одну строку, но могут тянуть больше строк. Каждый из них должен быть очищен, прежде чем можно будет выполнить сброс. Поэтому убедитесь, что вы используете все в операторах using () и не оставляете открытыми некоторые из ваших операторов.
Сколько всего соединений у вас работает, когда это происходит?
Если у вас максимум 5, и вы нажали все 5, то вызов сброса заблокирует - и это займет много времени. На самом деле это не так, он просто заблокирован в ожидании соединения в пуле, чтобы стать доступным.
Кроме того, если вы работаете в SQL Express, вы можете очень легко заблокироваться из-за требований многопоточности (это также может произойти в полноценном SQL Server, но гораздо менее вероятно).
Что произойдет, если вы отключите пул соединений?