Форум программистов CodeGuru
25 Июнь 2018, 19:22:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Потоки  (Прочитано 17646 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Гость
Гость
« : 26 Сентябрь 2004, 18:33:42 »

Немогу создать поток.  Делаю так. Создаю в текущем проекте класс типа CDialog и добавляю CWinTread с именем CWithClient. Потом делаю следующие
CRuntimeClass *ptr = RUNTIME_CLASS (CWithClient);
   ASSERT (lstrcmp (ptr ->m_lpszClassName, "CWithClient") == 0);
   
   theApp.HideApplication();
   AfxBeginThread(ptr, THREAD_PRIORITY_NORMAL, 0, 0, NULL);
Компилирую. Запускаю. Пробую создать поток. Выводит
                     Debug Assertion falid
                  file:thrdcore.cpp
                     line:342
                  Прервать повторить пропустить
Выбираю «Пропустить». Выводит
                 Out of memory
                       ok
Помогите. Заранее благодарен.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 29 Сентябрь 2004, 22:57:05 »

Цитировать
Потом делаю следующие
CRuntimeClass *ptr = RUNTIME_CLASS (CWithClient);
ASSERT (lstrcmp (ptr ->m_lpszClassName, "CWithClient") == 0);

theApp.HideApplication();
AfxBeginThread(ptr, THREAD_PRIORITY_NORMAL, 0, 0, NULL);


Неее... делать надо не так.
AfxBeginThread сам возвращает указатель на объект CWinThread.
Обычно AfxBeginThread используют для создания рабочих потоков. Пишем функцию вида:

UINT MyThreadProc(LPARAM lParam)
{
    ...
    return ...;
}

и при помощи AfxBeginThread ее можно "запустить в виде потока".


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

CWithClient thread;
...
thread.CreateThread();
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!