6

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

编辑:或者,这可以被视为终结器中的线程关联问题。如果有人对此有聪明的解决方案,我会全神贯注:)

4

1 回答 1

1

如果可能,尝试将依赖于本机依赖项的代码拆分为独立的 Windows 服务应用程序。如果它不能很好地与 WCF/IIS 一起工作,你应该避免冲突而不是与之对抗。

于 2012-03-13T05:04:16.087 回答