Как разместить класс в .net?
Вы можете удалять только dot-net экземпляры, которые реализуют dispose-pattern интерфейс IDisposable.
Чтобы заставить сборщик мусора немедленно освободить (неуправляемую) память:
GC.Collect();
GC.WaitForPendingFinalizers();
Обычно dotnet это плохая практика, но, например, в resource-disposal x64-версии .NET framework .net-framework есть ошибка, из-за которой .net сборщик мусора ведет себя dispose-pattern странно в некоторых сценариях, и .net-framework тогда вам может понадобиться disposing это сделать. Я не знаю, исправлена memory ли ошибка. Кто-нибудь знает?
Чтобы избавиться от класса, вы делаете это:
instance.Dispose();
или disposing вот так:
using(MyClass instance = new MyClass())
{
// Your cool code.
}
который будет преобразован .net во время компиляции в:
MyClass instance = null;
try
{
instance = new MyClass();
// Your cool code.
}
finally
{
if(instance != null)
instance.Dispose();
}
Вы можете реализовать интерфейс IDisposable следующим образом:
public class MyClass : IDisposable
{
private bool disposed;
///
/// Construction
///
public MyClass()
{
}
///
/// Destructor
///
~MyClass()
{
this.Dispose(false);
}
///
/// The dispose method that implements IDisposable.
///
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
///
/// The virtual dispose method that allows
/// classes inherithed from this one to dispose their resources.
///
///
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources here.
}
// Dispose unmanaged resources here.
}
disposed = true;
}
}
.net
memory
dispose
Как разместить класс в .net?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.