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

Ваш аккаунт

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

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

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

Как зделать чтоб програма отвечала на сообщения при выполнении длинного метода?

538
03 мая 2007 года
AVDEY
188 / / 17.11.2005
Где то видел тему как зделать так чтоб програма отвечала при работе длинного метода. По моему ета функция .Но как ето реализовать не разобралса. Если кто нибуть знает подскажите. И лутше какой то пример.
bool ProcessMessage()
{

return TRUE;
}
395
04 мая 2007 года
RelB
367 / / 09.11.2002
Цитата: AVDEY
Где то видел тему как зделать так чтоб програма отвечала при работе длинного метода. По моему ета функция .Но как ето реализовать не разобралса. Если кто нибуть знает подскажите. И лутше какой то пример.
bool ProcessMessage()
{

return TRUE;
}


Либо выполнять в другом потоке, либо, как вариант переодически вызывать

 
Код:
MSG msg;
      while(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
      {
        ::TranslateMessage(&msg);
        ::DispatchMessage(&msg);
      }
3
04 мая 2007 года
Green
4.8K / / 20.01.2000
Либо написать стейт-машину.
255
05 мая 2007 года
Dart Bobr
1.4K / / 09.04.2004
Цитата: Green
Либо написать стейт-машину.


А можна с этого момента чуть поподробней?

3
05 мая 2007 года
Green
4.8K / / 20.01.2000
Разбиваешь алгоритм на шаги.
Помещаешь каждый шаг в отдельный case блока switch/case.
Помешаешь всё это в процедуру, которая за один свой вызов делает один шаг (один case) и прирашивает параметр switch, т.о. переключается на след. шаг.
Вызываешь эту процедуру по таймеру или на каждой итерации, например, главного цикла сообщений.
Код:
void step()
{
    static int i = 0;
    switch(i++)
    {
        case 0:
           ..........
           break;
        case 1:
           ..........
           break;

        case N:
           ..........
           break;
    }
}
538
06 мая 2007 года
AVDEY
188 / / 17.11.2005
Но тогда время выполнения метода резко увеличивается.
3
06 мая 2007 года
Green
4.8K / / 20.01.2000
А как ты хотел? Бесплатно обрабатывать оконные сообщения? :)
Тебе уже предлагали: делай отдельным потоком.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог