我们有一个非常棘手的互操作问题,其中用于初始化第 3 方系统的线程必须与用于终止它的线程相同。不这样做会导致死锁。我们正在从 IIS 中托管的 WCF 服务执行互操作。目前,这种清理是在处置中完成的,通常效果很好。不幸的是,在重负载下,IIS 会进行粗鲁的卸载,我们永远不会调用 dispose。我们可以将关闭逻辑移动到关键终结器中,但这无济于事,因为我们不再可以访问初始化线程!在这一点上,我们唯一的办法似乎是通知 CLR AppDomain 现在可能处于损坏状态。但是,我不确定该怎么做(或者是否可能)。这可能是合同在阶级层面的效用,但我承认我没有
编辑:或者,这可以被视为终结器中的线程关联问题。如果有人对此有聪明的解决方案,我会全神贯注:)