Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
pa_han87
Зарегистрирован: 14.04.2006 Сообщения: 19
|
Добавлено: Чт Июн 12 2008 11:38 Заголовок сообщения: Как вырубить процесс из его потока? |
|
|
Приложение имеет 2 потока: (основной) отвечающий за интерфейс и (второй) поток сбора данных с устройства. Если во время работы потока сбора данных происходит ошибка, мне надо после вывода MessageBox'а юзеру завершить приложение.
Если писать что-то вроде:
if (MessageBox(..., MB_OK + MB_ICONERROR)==IDOK) Application->Terminate(); (или MainForm->Close()
приложение виснет после показа MessageBox'а.
Вводить в основной поток таймер, опрашивающий флаг, выставляемый вторым потоком, я не хочу.
Есть ли другие варианты? |
|
Вернуться к началу |
|
|
NetFantom
Зарегистрирован: 27.01.2004 Сообщения: 41 Откуда: Санкт-Петербург
|
Добавлено: Пт Июн 13 2008 04:16 Заголовок сообщения: |
|
|
так приложение виснет на MessageBox или на Application->Terminate()?
Если на второе, то нужно предусмотреть, что на закрытие окна, предположим, уничтожать поток обработки данных |
|
Вернуться к началу |
|
|
pa_han87
Зарегистрирован: 14.04.2006 Сообщения: 19
|
Добавлено: Сб Июн 14 2008 16:11 Заголовок сообщения: |
|
|
не отслеживал, но видимо проблема была была действительно, в Application->Terminate();
я решил дело отсылкой сообщения основному потоку; обработчик сообщения сначала уничтожает поток, потом основное окно |
|
Вернуться к началу |
|
|
|