C# 如何检查应用程序是否仍在使用ObjectContext?

C# 如何检查应用程序是否仍在使用ObjectContext?,c#,entity-framework-4,garbage-collection,object-reference,C#,Entity Framework 4,Garbage Collection,Object Reference,好吧,这个问题基本上说明了一切,但我会尽量给你一个背景。我正在使用Entity Framework 4.0,其中我经常使用以下语法- using (MLEntities context = ModelAccess.GetContext()) { /*just a sample statement*/ this.ClientList = context.Clients.ToList(); ... //Some other code } 我的理解是,每当我使用块

好吧,这个问题基本上说明了一切,但我会尽量给你一个背景。我正在使用Entity Framework 4.0,其中我经常使用以下语法-

using (MLEntities context = ModelAccess.GetContext())
{
    /*just a sample statement*/
    this.ClientList = context.Clients.ToList();
    ...
    //Some other code
}  
我的理解是,每当我使用块退出
时,就会调用
ObjectContext
类(MLEntities的基类)的
Dispose()
方法,我猜这会释放任何非托管资源,特别是在本例中,释放数据库连接。但是因为我通过
this.ClientList=context.Clients.ToList()持有对上下文对象的引用上下文未被垃圾回收。对吧?

现在,对于一些实例化的上下文对象,当应用程序运行时,我需要知道它们是否仍然被保留、被应用程序使用,或者已经被释放。在
using
块之外,我没有任何上下文引用,但即使有,尝试使用该引用也会使应用程序使用上下文对象。那我怎么做呢?如有任何建议,我们将不胜感激。谢谢

EDIT:实际上,我并不是说我持有对上下文对象的直接引用。无心之过我的意思是,由于
客户机
是上下文的一个属性,并且通过
this.ClientList
我持有对
客户机
的引用,只要实例化上下文的当前对象使用
this.ClientList
,它就不会使上下文对象保持活动状态吗?

使用()
将始终处理正在使用的对象。您不能通过ClientList保留对上下文的引用。这是对列表的简单引用。即使您在上下文被释放后对其进行了引用,您在访问它时也会遇到异常。

释放上下文时,ClientList将与上下文分离,因此EF将不再跟踪此列表的更改。

您持有的不是对上下文对象的引用,而是对列表的引用。
使用(){}
将始终调用对象的
Dsipose()
方法,以及该对象是否已实际释放(从内存中删除)取决于是否在
Dsipose()
方法中调用了
GC.Collect()
,对吗?可以用于已完成的
ObjectContext
类,但其他自定义对象如何?