CER可以用来保证永远不会调用finalize吗
本文关键字:调用 finalize 永远 CER | 更新日期: 2023-09-27 18:27:38
我们有一个非常棘手的互操作问题,其中用于初始化第三方系统的线程必须与用于终止它的线程相同。否则会导致死锁。我们正在从IIS中托管的WCF服务执行互操作。目前,这种清理是在处理过程中完成的,通常效果很好。不幸的是,在重载情况下,IIS会进行粗鲁的卸载,我们永远无法调用dispose。我们可以将关闭逻辑移动到关键终结器中,但这没有帮助,因为我们不再有权访问初始化线程!在这一点上,我们唯一的办法似乎是通知CLR AppDomain现在可能处于损坏状态。然而,我不知道该怎么做(或者是否可能)。这可能是合同在阶级层面上的效用,但我承认我并不完全理解这些。
EDIT:或者,这可能被视为终结器中的线程相关性问题。如果有人对此有一个聪明的解决方案,我会洗耳恭听:)
如果可能的话,尝试将依赖于该本机依赖关系的代码拆分为独立的Windows服务应用程序。如果它不能很好地与WCF/IIS配合使用,则应该避免冲突,而不是与之斗争。