Здравствуйте, Ведмедь и hattab, Вы писали:
H>>Я тебе говорил про потерю ресурсов на dbconnection. Ты мне сказал, что FxCop тебе все покажет. Ы?
В>Кстати хочу заметить, что ресурсы не потеряются, а будут освобождены только при следующей сборки мусора, что в условия ограниченного пула ресурсов может быть не приемлимо. Так что все равно со временем и файл и коннекция освободится... а в Паскале когда не освобожденный объект корректно освободится?
В .NET ресурсы, для которых важна детерминированность времени освобождения (файлы, соединения) оборачиваются в объекты, реализующие интерфейс IDisposable (это даже можно считать паттерном). По команде Dispose() объект сразу освобождает ресурс, после чего переходит в состояние Disposed ("я ресурсом уже не владею") и спокойно себе дожидается, пока его соберет GC и освободит все оставшиеся ресурсы (память, в частности). В С# (за VB не скажу) есть даже специальная конструкция:
using(IDisposable obj = GetSomeDisposable()) //Тут не обязательно непосредственно IDisposable, подойдет что угодно, от него унаследованное
{
//Do something
}
//Что эквивалентно
{
IDisposable obj = GetSomeDisposable();
//Do something
obj.Dispose();
}