У меня есть приложение, которое отправляет запросы на COM-сервер вне процесса, который обрабатывает запросы и отправляет их обратно запрашивающему приложению.
Клиентское приложение действительно контролирует запуск и остановку этогоOut-of-Proc COM-сервер и определяет его срок службы, так сказать.
Поскольку у этого приложения много сотен запросов в любой момент времени, для обработки этих запросов в большинстве случаев используется как минимум 4 одинаковых COM-сервера.
Проблема заключается в том, что иногда эти COM-серверы получаютзависла при обработке запроса, который перехватывает запрашивающее приложение, которое убивает COM-сервер вне процесса.Это, однако, не всегда происходит.
Иногда случается, что клиентское приложение запрашивает уничтожение COM-сервера, что приводит к тому, что клиент освобождает все ссылки на COM-сервер, но COM-сервер в итоге просто использует 25%процессора и просто никогда не умирает.Кажется, что он просто зависает и постоянно использует процессор.
У клиента есть механизм для принудительной попытки уничтожить процесс COM-сервера, если он не может умереть, однако даже это не работает в тех случаях, когда COM-сервервходит в загрузку процессора и просто зависает.
Кто-нибудь испытывал нечто подобное или есть какой-то совет, как можно разрешить подобную ситуацию?