GC.Collect似乎在后台线程中启动垃圾收集,然后立即返回.如何GC.Collect同步运行- 即等待垃圾收集完成?
这是在NUnit测试的上下文中.我尝试将gcConcurrent设置添加到我的测试程序集的app.config文件中,我尝试使用nunit.exe.config.两者都没有任何影响 - 当我调试时,我仍然可以看到终结器在"GC终结器线程"上运行,而不是调用的线程GC.Collect(NUnit的"TestRunnerThread"),并且两个线程同时运行.
背景:如果他们泄漏(不要调用Dispose on)特定类,我希望我的测试失败.所以我在该类中添加了一个设置静态wasLeaked标志的终结器; 然后我的测试TearDown调用GC.Collect()然后抛出如果wasLeaked是真的.但它并没有确定性地失败,因为当它读取时wasLeaked,终结器通常甚至还没有被调用.(在垃圾收集最终完成之后,它在一些后来的测试中失败了.)