Наследуйте свой класс от IDisposable:
public class LargeClassObject : IDisposable
{
var disposed = false;
var handle = new SafeFileHandle(IntPtr.Zero, true);
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposed)
return;
if (disposing) {
handle.Dispose();
}
disposed = true;
}
}
Тогда просто сделайте это:
public void Main()
{
using(var largeClass = new LargeClassObject(param1, param2))
{
try
{
DoSomethingWithObject(largeClass);
}
catch(Exception ex)
{
//Do any additional cleanup
}
}
}
Теперь, будет ли это работать для вас, зависит от ваших конкретных требований, но largeClass
будетудаляется из памяти при возникновении ошибки во время выполнения.