我对C#编程比较新,GC的概念以及它与IDisposable的关系还有点模糊。在垃圾回收方面,调用Dispose是什么意思?
具体来说,我想知道以下代码是否会偶尔失败,取决于垃圾回收启动的时间。(在我的测试中,我无法使其崩溃。)
//List<TestClass2> tc2List;
//TestClass2 invokes a thread. It implements IDisposable.
//Its Dispose() sets a stop-condition for the thread,
//and joins the thread, awaiting it to stop. (may take 100 msek)
tc2List.RemoveAll(t =>
{
if (String.Compare(t.Name, "Orange") == 0)
{
t.Dispose(); //May take up to 100 msek
return true;
}
return false;
});
IDisposable
才是相关的。通常与IDisposable
相关的对象会与 GC 交互,以便在其内存被回收后自动进行处理作为一种安全措施,但这就是它们之间的联系了。GC 和IDisposable
在其他方面没有关联。 - Jon