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