Будет ли SqlConnection утилизироваться GC?

) Отказ от ответственности: Я знаю, что IDisposable следует применять при работе с неуправляемыми ресурсами. Остальная часть кода должна быть детерминированной и выполнять , используя (...) {} (эквивалент try {} finally {Dispose ();} ), чтобы гарантировать очистку в ближайшее время насколько это возможно. Кроме того, GC не будет вызывать Dispose () , поэтому рекомендуемый шаблон должен переопределить метод Finalize () (в C # с использованием синтаксиса деструктора), который затем вызывает Dispose () . GC обычно вызывает Finalize () (если только не было вызвано GC.SuppressFinalize () ).

Проблема: Итак, теперь я понял это , У меня есть странный сценарий, когда я не могу сделать с использованием (SqlConnection ...) {} из-за неконтролируемого кода. Обычно я могу сделать детерминированный Dispose () , но не могу этого гарантировать. Я использовал Reflector для дизассемблирования SqlConnection и вижу, что он использует Dispose (), но, если я не ослеп, нет финализатора / деструктора ( Finalize () или ~ SqlConnection ( ) ). Означает ли это, что GC не «очистит» (отправит обратно в пул) соединение в нечетном случае, которого я не могу? Я не смог найти ничего определенного ...

13
задан Community 23 May 2017 в 12:25
поделиться