Можно ли асинхронно подключаться к серверу SQL? - PullRequest
2 голосов
/ 23 апреля 2009

Я знаю, как выполнять команды на сервере SQL асинхронно, используя Begin / EndExecuteNonQuery, но есть ли метод Begin / EndOpen в классе SqlConnection? Я хотел бы, чтобы это было асинхронным, потому что иногда это медленно, и я не хочу блокировать поток все время. Имеет ли это смысл?

Ответы [ 4 ]

3 голосов
/ 23 апреля 2009

Нет метода BeginConnect, но вы можете запустить новый поток и просто сделать это в фоновом режиме, если это будет работать для вас.

1 голос
/ 23 апреля 2009

Вы можете, но было бы необычно, чтобы это было очень полезно. Недостаточный ресурс для баз данных обычно связан не с соединениями, а с запросами. Вы подозреваете, что ваше приложение блокируется при открытии соединения?

0 голосов
/ 23 апреля 2009

Я бы пропустил выполнение всей команды, а не просто открытие соединения. Просто будьте осторожны, как вы справляетесь с работой с результатами, как только поток завершен.

0 голосов
/ 23 апреля 2009

Или, чтобы сохранить тот же шаблон, создайте делегат с сигнатурой метода, который вы хотите использовать в качестве асинхронного метода, и выполните BeginInvoke / EndInvoke для делегата.

Конечно, это не делает метод действительно асинхронным, поскольку за кулисами все еще есть поток, который ожидает возврата метода синхронизации, но позволяет использовать нормальный шаблон и использует поток из пула потоков для создания вызов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...