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 会在执行过程中发生任何错误时从内存中清除。