У нас есть приложение, которое использует несколько внепроцессных COM-объектов для различных задач.
Если пользователь говорит Windows завершить работу во время работы нашего приложения, то он отправляет всем приложениям (окнам верхнего уровня) уведомление о завершении работы, но COM-объекты OoP могут завершить работу до того, как родительский объект получит уведомление, и получит шанс на чистое завершение работы, что приведет к различные ошибки в разных компонентах.
Это усугубляется тем, что один из объектов OoP был создан для размещения нестабильного стороннего объекта, поэтому он автоматически перезапускается при сбое, который теперь не может быть перезапущен при завершении работы Windows.
Хотя мы можем справиться с ошибками в родительских процессах, есть ли способ для хостов ActiveX сказать Windows: «Я пока не закрываюсь, но сделаю в должное время», или, что еще лучше, заставить Windows не работать уведомить их в первую очередь?
И родительские процессы, и объекты OoP, и их узлы находятся в смеси C ++ и VB6.