Похоже, что вам, как правило, нужно добавить наблюдаемость в вашу программу, чтобы вы могли отслеживать ее состояние (работает, остановлен, ошибка и т. Д.).
Я бы предложил другое (и, возможно, более простое)подход), который не зависит от пользовательского интерфейса, который может измениться в будущем и который может быть более расширяемым в случае, если вы хотели бы наблюдать другую информацию о вашем приложении в будущем.
Почему бы и нетвы вместо этого запускаете события состояния из вашей программы по ошибке?Есть несколько различных способов сделать это с помощью продукта (wcf, удаленное взаимодействие, запись в программу просмотра событий и т. Д.), И ваше внешнее приложение регистрируется на эти события и действует соответствующим образом (например, отправляет электронное письмо)?
Вначале это может быть немного дополнительной работой (хотя я не уверен, так как вы уже столкнулись с проблемами с вашим подходом, и написание простого wcf-сервиса, который запускает события, не занимает так много времени), но я думаю, что стоитэто в будущем.