Мне нужно запустить какой-нибудь собственный код C ++ таким образом, чтобы в случае сбоя он не влиял на мою программу на C #.Я могу использовать COM-сервер out-proc с активацией «одноразового использования» , чтобы каждый экземпляр COM-объекта размещался в отдельном процессе.
Теперь я создаю набор рабочих потоков и каждый из них.создает экземпляр этого COM-объекта.Я также создаю «сторожевой» поток, который будет следить за рабочими потоками.
Предположим, что сторожевой поток замечает, что последний вызов объекта out-proc выполняется уже два дня, и это, вероятно, означает, чтообъектный код только что завис.Поэтому он хочет перезапустить процесс и для этого нужен идентификатор процесса.Как он находит идентификатор процесса?
Глупый способ, который я могу себе представить, заключается в том, что объект реализует интерфейс с методом GetProcessId()
, и клиент вызывает этот метод и сохраняет идентификатор процесса.
Какие еще есть способы?