Когда приложение закроется, соединение с БД закроется мгновенно? - PullRequest
1 голос
/ 21 марта 2012

Это то, что мне всегда было интересно… не так ли?

Потому что всякий раз, когда я пишу код для использования соединения с БД, я всегда каким-то образом должен быть закрыт перед тем, как перейти к следующему этапу.*

Но когда у меня есть ChildWindow, который открывает соединение в его конструкторе и не закрывает его, пока он не нажмет кнопку «Сохранить» или кнопку «Отмена».Тогда, если все Приложение будет закрыто, соединение БД будет закрыто мгновенно?Или он должен ждать тайм-аут и автоматически закрыться?

РЕДАКТИРОВАТЬ:

Поэтому я пытаюсь сохранить активное соединение для регистрации всех ошибок в моем приложении:

public App()
{

   ErrorHelper errorHelper = new ErrorHelper(); // Will open DB connection
   AppDomain currentDomain = AppDomain.CurrentDomain;
   currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException);

}

/// <summary>
/// For catch all exception and put them into log
/// </summary>
void currentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{

    errorHelper.WriteError(e.ExceptionObject as Exception);            

}

Потому что мне не нравится, как я открываю соединение каждый раз, когда регистрирую одну ошибку, поэтому я хочу держать соединение открытым все время.Это похоже на ОП, который я описал.В этой ситуации он постоянно держит соединение открытым.Но закроется ли соединение с БД сразу после его выхода?

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

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

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

Откройте и закройте соединение с помощью блока using и позвольте пулу соединений выполнить свою работу.

Есливаш процесс завершается, ваше соединение будет закрыто.

2 голосов
/ 21 марта 2012

Короткий и простой ответ: всегда используйте ваше соединение в выражении using:

using (var db = new Connection())
{
    ...
}

, и тогда вам не придется беспокоиться - оно просто закроется, когда выйдет за рамки,завершение метода, исключения или приложения.

...