Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

бесконечный цикл в mfc

11K
14 августа 2007 года
elsuk
31 / / 23.10.2006
возможно задавали вопрос такой но я не нашел.
создаю приложение с использованием mfc. имеются 2 кнопки (старт и стоп) и listbox.
нажимаю старт и в безконечном цикле у меня выполняются действия, и выводится некоторые данные в listbox. но вот проблема что приложение при это повисает.
плиз подскажите как правильно организовать запуск бесконечного цикла, чтобы приложение не повисало и можно было при необходимости остановить цикл

зарание спасибо
2.9K
14 августа 2007 года
Ation
96 / / 27.07.2004
Приложение зависает скорее всего потому, что обработчик события, выполняйщийся в основном потоке не вернул управление, а начал лупиться. Попробуй цикл запускать в отдельном потоке, завершить можно установив ивент.
Тоесть в потоке что-нить вроде
if (WaitForSingleObject(hStopEvent, 0) == WAIT_OBJECT_0)) break;
Класс MFC для создания потоков - CWinThread. Его описание смотри в MSDN.
1.9K
15 августа 2007 года
[*]Frosty
278 / / 17.06.2006
Вот статья по теме)
11K
15 августа 2007 года
elsuk
31 / / 23.10.2006
спасибо за советы, теперь создал отдельный поток и все нормально прорисовывается но теперь не получается остановить. при остановке прога просто вылетает, без сообщение о дебаге

делаю вот так
Код:
BOOL work;// глобальная

void Print()
{
while (work)
{
.....
}
}

void PrintThreadStart()
{
Print();
}

void C123Dlg::OnBnClickedOk() //старт
{
work=true;
    DWORD id;
    hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&PrintThreadStart, 0, 0, &id);
}

void C123Dlg::OnBnClickedCancel() //стоп
{
work=false;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог