Обрабатывать исключения из потока в глобальном обработчике исключений? - PullRequest
2 голосов
/ 03 сентября 2010

У меня есть основное приложение с установленным глобальным обработчиком исключений. Теперь для некоторых конкретных исключений, возникающих в другом потоке, я хочу, чтобы глобальный обработчик исключений вызывался. Но он обрабатывает только исключения из основного потока. Я также попробовал следующее изнутри потока, но оно также не работает:

RunInMainThread (procedure
                 begin
                 raise EExceptionFromWithinThread.Create;
                 end);

где RunInMainThread просто выполняет анонимный метод, заданный в качестве параметра в контексте основного потока.

Почему это не работает? Как правильно справиться с такой ситуацией?

Ответы [ 3 ]

4 голосов
/ 03 сентября 2010

Как насчет этого: отправить сообщение в основную ветку, какое исключение следует вызвать.

1 голос
/ 20 февраля 2011

Я обработал исключение в потоке, сохранив сообщение как общую строковую переменную. Когда состояние потока изменилось, я проверил переменную в основном потоке. Делает для очень читабельного кода.

0 голосов
/ 20 февраля 2011

Я делаю это в своих рамках, если вы заинтересованы (http://www.csinnovations.com/framework_overview.htm).

...