是否可以在 Compact Framework 应用程序中阻止垃圾收集器无条件地停止至少一个线程,或者至少在代码的某些部分阻止 GC 收集?
我认为它必须处理设置实时优先级,但我发现很多建议不要这样做。
是否可以在 Compact Framework 应用程序中阻止垃圾收集器无条件地停止至少一个线程,或者至少在代码的某些部分阻止 GC 收集?
我认为它必须处理设置实时优先级,但我发现很多建议不要这样做。
GC 需要冻结所有线程才能检查所有对象。如果某个线程正在运行并且正在修改/创建一个对象,它怎么能完成它的工作?
最好不要这样做。
您可以做的是在您进入不想被中断的状态之前调用 GC.Collect() 和 GC.WaitForPendingFinalizers()。这会给你一些时间。
非托管代码不允许访问未固定的托管对象,但它会在垃圾回收期间无阻塞地运行。如果您有某些例程必须在垃圾收集期间继续运行,并且它们不需要访问未固定的托管对象,那么您可以在非托管代码中编写这些例程并且 GC 不会影响它们。