对于intranet应用程序,我构建了一个MVC5网站。我需要一个非常大的类对象,在我的模型中有很多数据,出于安全原因,每次调用方法时都要构建类。
largeClass = new LargeClassObject(param1, param2);在函数的末尾,garbageCollector负责处理类。这很好用。有时,也许当intranet中断时,方法可能不会正确结束,类会留在内存中。我如何在下一次调用时检测是否存在这个类的前一个副本?
发布于 2019-02-27 23:28:32
从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将从内存中清除。
https://stackoverflow.com/questions/54908687
复制相似问题