Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки останавливаются при OnLButtonDblClk 
:(
    Опции темы
elsan
Дата 27.9.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.5.2007
Где: Томск

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



Есть диалоговое окно в нем отдельным потоком  пишутся и читаются данные с устройства, которые отображаются в окне. 
По LButtonDblClk вызывается еще одно  окно и запускается еще один поток, который тоже пишет и читает с этого же устройства. Использую критические секции. 
Проблема в том, что при событии LButtonDblClk второй поток запускается, а затем оба потока умирают, если привязать вызов второго окна и потока к пункту меню все работает. Но ButtonDblClk  обязательно нужен,  из-за чего потоки останавливаются? 
PM MAIL   Вверх
zkv
Дата 27.9.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



Вряд ли кто-нибудь сможет помочь вам по этим данным. 
Могу порадовать, что LButtonDblClk ничем особенно не отличается от... от всего остального smile
PM MAIL   Вверх
elsan
Дата 27.9.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.5.2007
Где: Томск

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



Вызывается второе окно так
Код

 for(int i = 0; i < 21; i++)
    {
        
        GetDlgItem(IdRectBc[i])->GetWindowRect(rect);
        CDlgGCM03::ScreenToClient(&rect);

        BOOL res = PtInRect(&rect, point );
        if( res == TRUE )
        {
            cs.Lock(800);

            CheckConnect(i);//обращение к устройству
            DataCOM(i);//обращение к устройству

            cs.Unlock();

            CBcDlg m_BcDlg;                            
                m_BcDlg.DoModal();

}                                           
}

Может двойной клик и не причем, это я сама придумала, просто без него вызываться стал нормально диалог,  при дебаге останавливается на Lock, похоже ждет пока освободиться.
Код

cs.Lock(150);
    BufferOut = SendMsg(hCom, iSlave, 3, iReg, iNumb, 0);
    Sleep(100);
    Result = ReadMsg(hCom, BufferIn);
cs.Unlock();

Почему потоки могут мешать друг другу?

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


 




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


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

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