Я не заканчиваю понимать использование Dispose
в C#, я понимаю, что он служит для того, чтобы удалить объекты, но не заканчиваюсь понимать, который является Вашим использованием, так как я думаю, что C# он располагает автоматическим пересборщиком мусора.
Edit: Я искал больше информации и он используется для не управляемых ресурсов, но каковы управляемые и не управляемые?
У использования dispose большая утилита есть в случае не управляемых ресурсов, но каков различие между управляемым ресурсом и один не управляемое?
Он относится ко всем типам внутри.NET, к которым garbage collector имеет доступ, и которых он берется за то, чтобы "управлять", управлять ресурсами, которые используют (использование cpu и памяти). Здесь включаются все классы Framework.NET.
Он относится к тем, которые существуют вне sandbox.NET, который включает любую вещь, которую он возвращен через призывы к АПИ'С Вин32, которые являются способом соглашаться на родных API´s операционной системы.
Если ты никогда не звонишь в функцию в API Win32 и никогда не получаешь никакого Win32 "handle" object, тогда ты не поддерживаешь никакого не управляемого ресурса, но Поля, Streams, связей на основе данных, и т.д., который ты открываешь через классы.NET framework, wrappers управляемые (свертки). Ты мог бы не поддерживать никакого не управляемого ресурса прямо, все же ты мог бы поддерживать косвенно через wrappers управляемые, именно поэтому управляемые wrappers осуществляют IDisposable.
Они позволяют тебе возвращать тебя в прежнее состояние любого ресурса, который ты получил бы от операционной системы через.NET (не управляемые ресурсы), и освобождать от этой формы объекты, которые использовали бы ресурсы.
Он повелительный, что освободили ресурсы после использования любого не управляемого ресурса (использованный прямо или косвенно), по этой причине было бы общим видеть в.NET фрагменты такого кода как следующий.
try
{
MemoryStream Mem = new MemoryStream();
//Trabajamos con el y luego
}catch{}
finally{
if(Mem!=null)Mem.Dispose();
}
Но чтобы предотвращать нас повторять этот код будучи так необходим освобождать ресурсы, не управляемые в.NET, с интерфейсом IDisposable мы можем использовать синтаксис using, что позволяет нам писать предыдущий фрагмент более элегантным образом.
using(MemoryStream mem = new MemoryStream())
{
//Trabajamos con el y luego se llamara a dispose automaticamente
}
Помни что осуществи IDisposable в классах, которые ты построил, которые поддержали ссылки на не управляемые ресурсы или wrappers управляемые.
Dispose используется для того, чтобы закрывать или освобождать правильно решения, которые создают субпроцессы в операционной системе, как например класс MemoryStream.
В настоящее время, используется решение using для того, чтобы использовать Dispose разъединенной формы, посредством интерфейса IDisposable. Пример:
using (MemoryStream MEM = new MemoryStream())
{
}
Используясь, таким образом, объект одинокий MEM будет существовать внутри скобок ключа. Когда курсор выполнения выйдет из вышеупомянутых скобок, решение using возьмется за то, чтобы закрывать правильно ресурсы системы, использованной объектом MEM, и не только это, но также каждый объект, созданный внутри скобок ключей.
Я надеюсь, что он подает тебя.
mГ©todo Dispose осуществляется, чтобы освобождать не управляемые ресурсы, которые она aplicaciГіn он использует. Implementing в Диспосе Метод
IDisposable †“The oft misunderstood and misused интерфейс
using - очень хорошая практика, чтобы определять объекты, в которых ты нуждаешься, освободите Ваши ресурсы как только ты заканчиваешь trabjar с ними.
using гарантирует правильное разрушение объекта, так как он только будет стоиться внутри района, который это определяет.
использует достаточно using, чтобы определять объект связи ado.net
using(SqlConnection conn = new SqlConnection("conn string")){
conn.Open();
//resto del codigo
}