Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с потоками

24K
14 марта 2008 года
engel65536
50 / / 17.10.2007
Добрый день, господа. Есть один вопрос - в моей программе наблюдается некий глюк при работе с потоком. В программе в отдельном потоке (использую TThread) производится обмен данными по RS232, и вывод данных на форму. Вывод делается приблизительно через каждые 100ms, сама функция вызывается через Synchronize(). Так вот, собственно, проблема: иногда (где-то один случай на десять-двадцать) программа виснет, т.е. форма обновляется и перерисовывается, но ни на какие действия не реагирует... Я никак не могу понять, в чем же здесь проблема... Меня смущает именно тот факт, что форма перерисовывается, т.е. по идее WM_PAINT до нее доходит. Но тогда я не понимаю, почему до нее не доходят WM_MOUSEDOWN, WM_KEYPRESS и все подобное...
11
14 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: engel65536
Добрый день, господа. Есть один вопрос - в моей программе наблюдается некий глюк при работе с потоком. В программе в отдельном потоке (использую TThread) производится обмен данными по RS232, и вывод данных на форму. Вывод делается приблизительно через каждые 100ms, сама функция вызывается через Synchronize(). Так вот, собственно, проблема: иногда (где-то один случай на десять-двадцать) программа виснет, т.е. форма обновляется и перерисовывается, но ни на какие действия не реагирует... Я никак не могу понять, в чем же здесь проблема... Меня смущает именно тот факт, что форма перерисовывается, т.е. по идее WM_PAINT до нее доходит. Но тогда я не понимаю, почему до нее не доходят WM_MOUSEDOWN, WM_KEYPRESS и все подобное...



говорят TThread глючный... используй WIN API CreateThread

24K
16 марта 2008 года
engel65536
50 / / 17.10.2007
Я извиняюсь, господа, но у меня снова очередной глупый вопрос. ПО совету Охотника решил попробовать использовать потоки WinAPI - наткнулся на такую ситуацию, что и не знаю куда идти. Дело в том, что для упрощения всей лабуды и сокращения количества запаров я всю работу потока делал в отдельном классе, в котором использовался билдеровский TThread - там все через задницу, но работало.
Когда я решил попробовать WinAPI - возникла проблема. Функция потока является членом класса, а в CreateThread() ему нужна просто функция, т.е. он ругается на "Cannot convert 'unsigned long (__stdcall * (_closure )(void *))(void *)' to 'unsigned long (__stdcall *)(void *)'", т.е. насколько я понимаю, ему не нравится, что моя функция - член класса, т.е. __closure.
Никак не могу понять, эта проблема каким образом может быть устранена или обойдена?..
240
16 марта 2008 года
aks
2.5K / / 14.07.2006
Передавай указатель на статическую функцию класса - на нее можно передать. А в параметрах указатель this на нужный текущий экземпляр объекта.
Статическая функция уже по этому указателю вызовет нужную функцию объекта.
24K
16 марта 2008 года
engel65536
50 / / 17.10.2007
А вот тут у меня меня возникает еще одна проблема - я не могу изменять список параметров функции потока, ибо этот список устанавливается свыше виндой, причем сама функция является при всем при этом еще и CALLBACK'ом...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог