0
美好的一天!测试访问器垃圾回收
我在VS2010中使用MSTest。为什么访问器在测试执行后不被垃圾收集?这是我的代码。这很简单。
[TestClass]
public class CheckStringsWorkTest
{
CheckProcess checkProcess = null;
CheckProcess_Accessor checkProcess_Accessor;
[TestMethod]
public void StringShaveTest()
{
// MessageBox.Show("Start snapshot 1");
checkProcess = new CheckProcess();
checkProcess_Accessor = new CheckProcess_Accessor(new PrivateObject(checkProcess));
checkProcess.Dispose();
checkProcess = null;
}
[TestCleanup()]
public void RunAfterAllTests()
{
// If uncomment then GC is OK
//checkProcess_Accessor = null;
try
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
catch { }
// MessageBox.Show("Start snapshot 2");
}
据我了解 - 访问器使用PrivateObject作为包装来保存实际的对象。但是,如果我将对象设置为null(checkProcess),则清除引用,所以唯一引用它是来自访问器 - 为什么它不能被收集?它拥有实际的对象,而不是它的副本。