首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net MVC5检查类是否已在内存中

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

Stack Overflow用户
提问于 2019-02-27 23:15:56
回答 1查看 46关注 0票数 0

对于intranet应用程序,我构建了一个MVC5网站。我需要一个非常大的类对象,在我的模型中有很多数据,出于安全原因,每次调用方法时都要构建类。

代码语言:javascript
复制
largeClass = new LargeClassObject(param1, param2);

在函数的末尾,garbageCollector负责处理类。这很好用。有时,也许当intranet中断时,方法可能不会正确结束,类会留在内存中。我如何在下一次调用时检测是否存在这个类的前一个副本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-27 23:28:32

从IDisposable继承您的类:

代码语言:javascript
复制
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;
   }
}

然后只需这样做:

代码语言:javascript
复制
public void Main()
{
    using(var largeClass = new LargeClassObject(param1, param2))
    {
        try
        {
            DoSomethingWithObject(largeClass);
        }
        catch(Exception ex)
        {
            //Do any additional cleanup
        }
    }
}

现在,这是否适用于您取决于您的特定需求,但是当执行过程中发生任何错误时,largeClass将从内存中清除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54908687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档