2016-02-03 5 views
2

Мой вопрос заключается в следующем:Как создать бесконечную бесконечную петлю без замораживания?

Как создать бесконечный цикл на C++, который не замораживает окно, сохраняет его отзывчивым и позволяет закрывать программу в любое время?

Пример:

#include <Windows.h> 
int main() 
{ 
    while(1) 
    { 
     FlashPrettyGraphics(); 
     Sleep(10); 
    } 
} 

Эта программа, как это прямо сейчас, будет работать в течение ок. через дюжину секунд, после чего он перестанет реагировать и падает. Во время выполнения окно не может быть перемещено.

Как это решить?

+0

Поиск ** нить ** – Guiroux

+2

Поиск ** обработки событий **. Ваше окно зависает и происходит сбой, потому что вы не обрабатываете события, которые получает ваше окно. Неважно, если ваш цикл бесконечен или нет, это единственное требование для обработки событий. – HolyBlackCat

ответ

4

Обычно это достигается с помощью многопоточности. Вы создаете один поток, который взаимодействует с пользователем, а затем вы создаете другой поток с бесконечным циклом, который выполняет обработку.

+2

Правильно, как OP пропускает обработку событий, поэтому его окно зависает и выполняет аварийные ситуации (из-за переполнения очереди событий). То, что он просит, может быть легко достигнуто с помощью одного или нескольких потоков, единственное требование - быстро обрабатывать события. Теперь ** OP должен добавить правильную обработку событий, без чего новый поток ничего не изменит **. – HolyBlackCat

Смежные вопросы