Почему блок finally в ASMX WebMethod написан с использованием методов Close и Dispose - PullRequest
0 голосов
/ 09 июня 2011

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

finally
{
    if (command != null)
    {
        command.Dispose();
        command = null;
    }
    if (connection != null)
    {
        connection.Close();
        connection.Dispose();
        connection = null;
    }
    if (adapter != null)
    {
        adapter.Dispose();
        adapter = null;
    }
}

1 Ответ

1 голос
/ 09 июня 2011

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

Наличие этого кода в блоке finally обеспечивает закрытие соединений, удаление ресурсов, используемых при их вызове, и сбор мусора.

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

...