У нас очень сложная проблема взаимодействия, когда поток, используемый для инициализации сторонней системы, должен быть тем же потоком, который используется для его завершения.Невыполнение этого условия приводит к тупику.Мы выполняем взаимодействие из службы WCF, размещенной в IIS.В настоящее время эта очистка выполняется и обычно работает очень хорошо.К сожалению, при большой нагрузке IIS будет выполнять грубую разгрузку, и мы никогда не сможем вызвать dispose.Мы можем переместить логику выключения в критический финализатор, но это не поможет, поскольку у нас больше нет доступа к инициализирующему потоку!На данный момент наш единственный выход, кажется, уведомляет CLR о том, что AppDomain теперь, вероятно, в поврежденном состоянии.Однако я не уверен, как это сделать (или если это вообще возможно).Возможно, это полезность контрактов на уровне класса, но я признаю, что не совсем понимаю их.
РЕДАКТИРОВАТЬ: В качестве альтернативы, это может рассматриваться как проблема сходства потоков в финализаторе.Если у кого-то есть умное решение этого вопроса, я весь в ушах:)