Рассмотрим следующую функцию потока:
UINT MyClass::threadFunc(LPVOID lParam)
{
// 1. Initialize stuff
// 2. Validate stuff
// 3. Do first task
// 4. Do second task
// 5. Un-initialize everything and return
}
Эта тема создается диалогом в моем приложении. Этот поток будет запущен только один раз за время существования диалога (это рабочий поток).
При возникновении некоторого асинхронного события (возможно, нажатия кнопки, какого-либо другого события, о котором сообщается, что угодно), я хочу уведомить этот поток о немедленном возврате, чтобы мой диалог мог завершиться корректно (после ожидания завершения этого потока). Я не могу просто выйти из диалога, потому что этот поток все еще будет работать.
Я относительно новичок в C ++, и вот что я подумал (псевдокод):
try-catch
,Это не сработало, поэтому я немного исследовал и нашел ответы, похожие на этот. Но по какой-то причине у меня есть ощущение, что есть гораздо более простой способ сделать это. Я просто хотел получить разъяснения, прежде чем приступить к реализации указанной идеи.
Спасибо!
Некоторый поиск, я нашел это:
Окна, Внедрение исключения: создание исключения в другой теме, Определяет ThreadAbort
Портативный, Как я могу распространять исключения между потоками?, как вы упомянули
Других решений пока нет …