Как разместить класс в .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

2022-08-18T11:50:50+00:00