Если происходит сбой моего приложения, я использую ExceptionFilter, чтобы отловить сбой, выполнить некоторые окончательные действия, а затем показать пользователю окно с сообщением о сбое приложения.многое я могу (или я смею) сделать, потому что, если я сделаю слишком много, исполняемый код может получить доступ к поврежденной памяти и снова потерпеть крах.Некоторые из вещей, которые я в настоящее время не могу сделать (или я не осмеливаюсь делать), это закрывать сетевые соединения, сеансы базы данных Oracle, ...
Проблема заключается в том, что если приложение падает,на обед, пока открыт MessageBox, другие пользователи могут быть заблокированы из-за открытого сеанса базы данных.Поэтому я хочу:
- Либо MessageBox с тайм-аутом.Проблема в том, что вы не можете сделать это с помощью стандартной функции MessageBox Win32 API, и я не хочу создавать для нее специальный диалог (потому что я хочу минимизировать выполняемую логику после сбоя)
- возможность закрыть MessageBox из другого потока (другой поток может предоставить логику тайм-аута).
Я что-то пропустил в Win32 API и есть ли возможность иметь MessageBox свремя ожидания?
Или как правильно закрыть открытый MessageBox из другого потока (как получить дескриптор MessageBox, как его закрыть, ...)?