Глобальное соединение SQL в фоновом режиме - PullRequest
1 голос
/ 27 августа 2011

Я пытаюсь создать небольшое приложение Windows Forms с .Net 4.0

Часть моей программы должна подключаться к базе данных, но когда я делаю следующее:

SqlConnection conn = new SqlConnection(connectionString);

try
{
    conn.Open();
} 

....

Вся программа просто зависает, пока не будет установлено соединение.То, что я хочу сделать, это иметь возможность установить / открыть это соединение, я полагаю, в фоновом режиме.Таким образом, программа по-прежнему будет реагировать на нажатия кнопок и т. Д.

Кроме того, как сделать это единственное доступное соединение глобально для моей программы?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 27 августа 2011

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

Как мне сделать это единственное соединение доступным для моей программы?

Это плохая практика. Соединения с базами данных должны оставаться открытыми в течение кратчайшего возможного периода времени. Получите соединение непосредственно перед тем, как вам понадобится его использовать, а затем закройте его, как только вы закончите. Поскольку вы используете C #, вы можете воспользоваться блоком using, который управляет доступными ресурсами для вас:

using (var conn = new SqlConnection(connectionString)) {
    try {
        conn.Open();
        // do things here...
    }
    catch (Exception) {
    }
}

Даже если вы хотите сделать что-то вроде асинхронного открытия соединения, какой цели оно будет служить? У ваших пользователей будет более отзывчивый пользовательский интерфейс, но он не сможет ничего сделать в приложении, пока не будет установлено соединение.

0 голосов
/ 27 августа 2011

Случай, который вы хотите сделать, не предлагается, потому что вы должны сделать операции с db как можно быстрее.

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