Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Работа с потоком


Автор: Annuta 24.4.2007, 10:41
Привет! Народ помогите плиз, создаю поток по нажатию кнопки так 
Код

DWORD trdID; 
    HANDLE trd;    
    trd = CreateThread((LPSECURITY_ATTRIBUTES)0, (DWORD)0, (LPTHREAD_START_ROUTINE)ThreadText, 
    (LPVOID)0, (DWORD)0, (LPDWORD)&trdID);

Затем мне необходимо, чтобы  в потоке опрашивалась функция и результаты этого опроса обновлялись в едите на диалоге...
  ... ! Вот моя фунция --- 
Код

DWORD WINAPI ThreadText(void *p) 
    { 
        for(;;) 
        {    
                 VIST_Open();
            Sleep(1000); 
        } 
      return 1; 
    }    

Ща она просто вызывает функцию... А как мне её переделать чтобы она ещё и данные обновляла в едите ??? Я понимаю что надо её как то с диалоговым классом связать --но как  ? Заранее спасибо...

Автор: Annuta 24.4.2007, 12:20
Спасибо... разобралась сама...
вот как надо было ..
Код

    DWORD trdID; 
    HANDLE trd;
    trd = CreateThread((LPSECURITY_ATTRIBUTES)0, (DWORD)0, (LPTHREAD_START_ROUTINE)ThreadText, 
    (LPVOID)this, (DWORD)0, (LPDWORD)&trdID);    


Код

DWORD WINAPI ThreadText(CUSB_PLLDlg* pDlg) 
{ 
        for(;;) 
        {
            YIG_Termo(0);
            str="Ammcj";
            pDlg->GetDlgItem(IDC_EDIT1)->SetWindowText("s");
            MessageBox(0,str, _T("Information"), MB_OK | MB_ICONERROR);
            
            Sleep(5000); 
        } 
      return 1; 
    }    


Автор: ama_kid 24.4.2007, 14:03
В качестве небольшой ремарки: такой код - источник возможных утечек памяти:
1) Во-первых, нет условия выхода из потока (крутится безусловный бесконечный цикл), поэтому при интенсивном создании/уничтожении потоков память будет утекать...
2) Почитай еще http://support.microsoft.com/kb/104641

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)