| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > AfxBeginThread, проблема с запуском функции |
| Автор: lv151 29.6.2009, 17:44 | ||
Запускаю под отладчиком, сначала проходят: строка1 строка2 строка3 А только после этого ThreadProc. |
| Автор: jonie 29.6.2009, 19:03 |
| ну и в чем проблема? С чего вы взяли что нить будет выполнена немедленно (оторвите руки тому, кто вам такое сказал)? Она будет выполнена тогда когда на это появится время, и будет полностю инициализирована. Поставьте Sleep(1000) после AfxBeginThread и все в большинстве случаев будет так как хочется Вам. |
| Автор: lv151 30.6.2009, 09:02 |
| Запускается только один поток. В функцию потока передаётся указатель на класс, delete для него срабатывает до того как запуститься функция потока. |
| Автор: jonie 30.6.2009, 09:44 |
| и что вы хотите этим сказать нам? |
| Автор: lv151 30.6.2009, 10:03 |
Уже ничего. Появилась другая проблема. В функцию потока передаю CListCtrl, при InsertString в него всё виснет. |
| Автор: Earnest 30.6.2009, 10:31 |
| Оболочки, производные от CWnd , валидны только внутри потока, где созданы. Не все, но некоторые MFC-функции будут ругаться. Но виснет у тебя, возможно, из-за какого-то deadlock'а. InsertString реализуется через SendMessage, а это дело в потоке вполне может вызвать взаимоблокировку. Лучше всего 1) не работать с окнами в чужом потоке 2) если уж приспичило, передавай HWND и делай все манипуляции через API (по крайней мере, можно выбирать, какой функцией сообщение послать). |
| Автор: lv151 30.6.2009, 10:35 | ||
ОК. |