Рассмотрим следующий код:AdsConnection не закрыт?
private static void GetData<TConnection, TCommand>(string connectionString, DataTable dataFromDbf, string commandText)
where TConnection : IDbConnection
where TCommand : IDbCommand {
using(IDbConnection oConn = GetConnection<TConnection>(connectionString)) {
oConn.Open();
IDbCommand oCmd = oConn.CreateCommand();
oCmd.CommandText = commandText;
dataFromDbf.Load(oCmd.ExecuteReader());
oConn.Close();
}
}
Метод является универсальным, так как не все клиенты сервера Adavatage DB, и мы должны возвратиться к OleDbConnection. В большинстве случаев мы используем объект AdsConnection (из Advantage.Data.Provider.dll).
Приведенный выше код закрывает соединение, и объект удаляется при выходе из оператора using.
Когда мы используем утилиту Advantage Management Utility для просмотра всех подключений на сервере объявлений, мы замечаем, что соединения остаются открытыми. Но не все! Мы называем этот метод 200 раз, и только немногие остаются открытыми, иногда превышающими клиентов MAX_CONNECTIONS. Мы можем обойти это, благодаря Jens Mühlenhoff.
Вопрос:
Почему не закрытие соединения при вызове oConn.Close()? У кого-нибудь есть идеи?
супер. Вызов FlushConnectionPool() сделал это. Спасибо. – user1393612