Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка при использовани AfxBeginThread 
:(
    Опции темы
2faust
Дата 27.5.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 14.12.2005

Репутация: нет
Всего: нет



всем привет.

вы не поскажите, где тут накосячил в очередной раз :

имеется ф-ция в главном потоке :

Код

X::Fun()
{
        ...
        CWinThread *pThread = ::AfxBeginThread(Fun2, this, 0, 0, 0, NULL); // на этой строчке выскакив. ошибка
        ::WaitForSingleObject(pThread,INFINITE); // можно наверное закоментить, поток убивается в другой ф-ции
        ...
}


Код

X::Fun2(LPVOID pParam)
{
    X* pX = (X*) pParam;

    pX->Fun3();

    ::AfxEndThread(0, TRUE);
}


Код

если использую ::AfxBeginThread(Fun2, this, 0, 0, 0, NULL), то возник. след. ошибка :
'X::Fun2': function call missing argument list; use '&X::Fun2' to create a pointer to member
    

Код

если использую ::AfxBeginThread(&X::Fun2, this, 0, 0, 0, NULL), то возник. след. ошибка :
'AfxBeginThread' : none of the 2 overloads could convert all the argument types


буду очень благодарен.   smile 

Это сообщение отредактировал(а) 2faust - 27.5.2009, 14:50
PM MAIL   Вверх
Alca
Дата 27.5.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



http://forum.codenet.ru/showthread.php?t=5730

Добавлено через 1 минуту и 47 секунд
http://forum.sources.ru/index.php?showtopic=178438

Добавлено через 4 минуты и 15 секунд
http://forum.codeby.net/topic17724.html

Добавлено через 5 минут и 21 секунду
http://social.msdn.microsoft.com/forums/en...c2-171cc759454a

Добавлено через 6 минут и 5 секунд
еще?


--------------------
PM WWW ICQ Skype Jabber   Вверх
2faust
Дата 27.5.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 14.12.2005

Репутация: нет
Всего: нет




2 Alca

спасибо.
очень информативной оказалась последняя ссылка от мсдн. даже для меня удивило, обычно по справке они меня разочаровывают.
PM MAIL   Вверх
2faust
Дата 28.5.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 14.12.2005

Репутация: нет
Всего: нет




есть очередная трабла 
Код


// Global variable
HANDLE _handler;

// ф-ция главного потока
X::Fun()
{
        ...
        CWinThread *pThread = ::AfxBeginThread(Fun2, this, 0, 0, 0, NULL); // на этой строчке выскакив. ошибка
        ::WaitForSingleObject(pThread,INFINITE); // можно наверное закоментить, поток убивается в другой ф-ции
        ...

}

X::Fun3()
{
    ...
    
    ::SetEvent(_handler);
}


// дочерний потока
X::Fun2(LPVOID pParam)
{
    X* pX = (X*) pParam;

    pX->Fun3();
    
    ::WaitForSingleObject(_handler,INFINITE);

    ::AfxEndThread(0, TRUE);

}


увы опять не запускается ф-ция pX->Fun3() из X::Fun2().
Что не так делаю?  

конечно есть вариант, засунуть X::Fun3() в ф-цию главного потока, но не хотелось бы основной поток нагружать дополнительными действиями.
PM MAIL   Вверх
Alca
Дата 28.5.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Цитата

увы опять не запускается ф-ция pX->Fun3() из X::Fun2().

Что за ошибка?


--------------------
PM WWW ICQ Skype Jabber   Вверх
2faust
Дата 28.5.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 14.12.2005

Репутация: нет
Всего: нет



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

вот попытался реализовать, но сейчас это только набросок :

какое надо отправит сообщение в главный поток, чтобы сигнализировать ему что рабочий поток закончил свою работу ?

т.е моя реализация :

Код

// Global variable
HANDLE _handler;

#define   THRD_MESSAGE_FOR_FUN3    WM_USER + 1



X::Fun()
{
        for ( i=0 ; i < number; i++)
        (
           // собираю данные для X::Fun3()
            ...
            CWinThread *pThread = ::AfxBeginThread(Fun2, this, 0, 0, 0, NULL); 
            
             GetMessage ( &msg , NULL , THRD_MESSAGE_FOR_FUN3 , 0 );

            ::WaitForSingleObject(pThread,INFINITE); // Как просигнализировать что pThread перешел в сигнальное состояние ????
            ...
        }

}

X::Fun3()
{
    ...
    
    ::SetEvent(_handler);
}

// дочерний потока
X::Fun2(LPVOID pParam)
{
    X* pX = (X*) pParam;

    pX->Fun3();
    
    ::WaitForSingleObject(_handler,INFINITE);

    ::PostMessage(pX, THRD_MESSAGE_FOR_FUN3, 0, 0);


    ::AfxEndThread(0, TRUE);

}

PM MAIL   Вверх
Alca
Дата 29.5.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



http://sources.ru/cpp/faqs/41.htm

Добавлено через 1 минуту и 34 секунды
http://tdoc.ru/c/cpp-sources/classes-mfc/s...otokov-mfc.html


--------------------
PM WWW ICQ Skype Jabber   Вверх
2faust
Дата 29.5.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 14.12.2005

Репутация: нет
Всего: нет




спасибо за информатив. ссылки. буду разбираться.  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.