| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Поток, WaitForSingleObject в цикле. |
| Автор: lv151 30.6.2009, 14:48 | ||
Обязательно нужно дождаться завершения потока, но из за while(!run) наблюдаются дикие тормоза. Как лучше поступить в моей ситуации? |
| Автор: GoldFinch 30.6.2009, 15:29 |
| WaitForSingleObject(event, 100); замени 100 на INFINITE |
| Автор: lv151 30.6.2009, 15:39 |
| То же самое. Может быть дело в listCtrl? INFINITE - теряется "асинхронность". |
| Автор: lv151 30.6.2009, 16:12 | ||
Ничего не попадает в list. Точнее нет, через некоторое время приложение просыпается и строки добавляются в CListBox, но с тормозами и отрисовывается только скролл от него |
| Автор: GoldFinch 30.6.2009, 18:20 |
| эм... твой код ждет в WaitForSingleObject только 1 раз остальное время там просто бесконечный цикл |
| Автор: voov 1.7.2009, 10:36 | ||
а если убрать этот слип? |
| Автор: lv151 1.7.2009, 11:10 | ||
| всё ок. Изменил логику работы с потоком. Получилось так, что в основном потоке был цикл, в теле которого и запускался поток.
в одном из топиков у меня проблема с передачей контрола СlistCtrl в поток. AfxBeginThread(ThreadProc, listCtrl); .... WaitForSingleObject(event, INFINITE); - Проблема в том, что я ожидал события, которое SetEvent-ось в функции потока. Висло в этом месте: ... { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); } ... Сейчас я передаю его парента. |