在我的ASP.NET MVC应用程序中,我有一个这样的控制器:
[HttpPost]
public ActionResult CreateTestCategory(TestCategory testCategory)
{
BLL.Admin.CreateTestCategory obj = new BLL.Admin.CreateTestCategory();
obj.Create(testCategory.TestCategoryName);
//((IDisposable)obj).Dispose();
return RedirectToAction("TestCategory", "Admin");
}
此处BLL.Admin.CreateTestCategory
位于另一层,并且未实现IDisposable。它只是进行一些EF数据库调用,这些调用使用Repository模式以自己的方式处理,所以不用担心。但是在这个控制器中我创建了该类的对象obj
。在解决之后,我想手动销毁/处置obj
。所以我注释掉了这一行,这是处理obj
的唯一方法吗?
我没有让BLL.Admin.CreateTestCategory
实现IDisposable的原因是,可能有一百个类似它。我不想去每一个并实现IDisposable然后使用using
块,它很痛苦,而我想在创建它之后手动处理它。我也不想等待GC。那么完美可靠的做法是什么?
答案 0 :(得分:1)
这个问题已在问题本身的评论中以迂回的方式得到回答,但总结一下CodingYoshi,Evk和Fabjan在那里所说的......
vmax
用于清理不由.NET运行时管理的资源。如果您需要清理与数据库,文件锁等的连接,那么您真的应该使用IDisposable
。对于托管内存,垃圾收集器几乎可以在任何情况下更好地处理它。可以使用析构函数,但通常不需要。
参考文献: