![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Simeon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.2.2004 Репутация: нет Всего: нет |
Может кто сталкивался.
примеры кода: 1. Так компилится: //-------------------------------------------------------- extern DWORD WINAPI gate(LPVOID arg); HANDLE hTHR; LPDWORD lpThrID=NULL; hTHR=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)gate,NULL,0,lpThrID); //--------------------------------------------------------- 2. А так нет: //-------------------------------------------------------- class cserver{ public: static DWORD WINAPI gate(LPVOID arg); }; //-------------------------------------------------------- cserver server; HANDLE hTHR; LPDWORD lpThrID=NULL; hTHR=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)server.gate,NULL,0,lpThrID); //--------------------------------------------------------- Пишет: error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTHREAD_START_ROUTINE' Я не понял. Может вообще нельзя методы юзать как потоки. Но в MSDN об этом нет ни слова. |
|||
|
||||
| Simeon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.2.2004 Репутация: нет Всего: нет |
Проблемма решилась
Привожу для справки ( может кому понадобится): Нашел на http://adam.stup.ac.ru/Developer/ArticleDe...&mi=106&mic=363 Напрямую вызвать метод как поток нельзя. Есть только workaround( путь в обход) Создается статическая функция член класса, которая и запускается как поток. В нее передается объект данного класса. А затем вызывается тот метод, который должен работать как поток. Код: class CDemo { public: static DWORD WINAPI ThreadStub(LPVOID Parameter) { ((CDemo*)Parameter)->Thread(); } void Thread() { ... } }; int main(int argc, char* argv[]) { CDemo c; DWORD Dummy; HANDLE h=CreateThread(NULL,NULL,CDemo::ThreadStub,&c,NULL,&Dummy); WaitForSingleObject(h,INFINITE); return 0; } Я проверил. Работает. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |