Я создаю компонент в серверном приложении, который управляет соединениями между моим приложением и внешней службой. Мой компонент обнаруживает, когда сервер недоступен, запускает фоновый поток до тех пор, пока служба не станет доступной, а затем снова входит в «рабочее» состояние.
Моя проблема заключается в том, что если процесс, вызывающий компонент, завершится во время работы этого потока, приложение не завершит работу, пока поток не выйдет. По сути, мое приложение не может закрыться, если эта служба доступна.
Мой вопрос: есть ли способ определить, пытается ли приложение закрыться, чтобы можно было завершить какие-либо фоновые потоки? Я заметил пару событий в классе AppDomain, но я не уверен, при каких условиях и в каких средах они будут запускаться.
Поскольку это низкоуровневый компонент, я не хочу, чтобы он знал что-либо об окружающей среде, в которой он работает, и я не хочу, чтобы высокоуровневый компонент должен был сообщать ему, что он выключается.
Этот компонент будет использоваться как в службе WCF, так и в приложении службы Windows, и я также делаю тесты из клиентского приложения WinForm.