ASP.Net MVC5 检查 class 是否已经在内存中
ASP.Net MVC5 check if class is already in memory
对于 Intranet 应用程序,我构建了一个 MVC5 网站。我需要一个非常大的 class 对象,在我的模型中包含大量数据,出于安全原因,每次调用该方法时都要构建 class 帽子,即
largeClass = new LargeClassObject(param1, param2);
在函数的末尾,garbageCollector 会处理 class。那很好用。有时,也许当内部网中断时,方法可能没有正确结束并且 class 留在内存中。
我如何在下一次调用时检测是否存在此 class 的先前副本?
从 IDisposable 继承您的 class:
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
会在执行过程中发生任何错误时从内存中清除。
对于 Intranet 应用程序,我构建了一个 MVC5 网站。我需要一个非常大的 class 对象,在我的模型中包含大量数据,出于安全原因,每次调用该方法时都要构建 class 帽子,即
largeClass = new LargeClassObject(param1, param2);
在函数的末尾,garbageCollector 会处理 class。那很好用。有时,也许当内部网中断时,方法可能没有正确结束并且 class 留在内存中。 我如何在下一次调用时检测是否存在此 class 的先前副本?
从 IDisposable 继承您的 class:
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
会在执行过程中发生任何错误时从内存中清除。