ASP.Net MVC5检查类是否已在内存中

时间:2019-02-27 15:15:56

标签: c# asp.net asp.net-mvc-5

对于Intranet应用程序,我构建一个MVC5网站。我需要一个非常大的类对象,该对象中的模型中包含大量数据,并且出于安全原因,每次调用该方法(即

)时都必须构建该类帽子
largeClass = new LargeClassObject(param1, param2);

在函数末尾,garbageCollector会处理该类。很好有时,也许当Intranet中断时,该方法可能无法正确结束并且类仍保留在内存中。 如何在下一个调用中检测到该类的先前副本是否存在?

1 个答案:

答案 0 :(得分:1)

从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将从内存中清除。