Помогите плз, может кто то слышал о такой ситуации:
в MFC-шном приложении, есть обработчик моего собственного сообщения при этом из двух мест программы из разных потоков делается PostMessage(hWnd, MY_MESSAGE,0,0)
самое странное что по логам получается что это функция выполняется парралельно, например:
LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam)
{
LOGMSG("Enter OnMyMessage", ::GetCurrentThreadId());
А>Enter OnMyMessage 3340 А>Enter OnMyMessage 3340 А>Leave OnMyMessage 3340 А>Leave OnMyMessage 3340
А>Может кто то раньше с таким сталкивался.
А>заранее спасибо
Ну и чего тут не так — если из разных потоков? Нужно "правильное" выполнение — используй CriticalSection
А>Логи имеет след вид:
А>Enter OnMyMessage 3340 А>Enter OnMyMessage 3340 А>Leave OnMyMessage 3340 А>Leave OnMyMessage 3340
А>Может кто то раньше с таким сталкивался.
А>заранее спасибо
Я что-то не пойму. Из логов видно, что функция запускается из одного потока а не из разных так как ID потоков одинаковые.
В твоем обработчике сообщения есть прокрутка цикла сообщений.
Или явные циклы, или функции ожидания с прокруткой сообщений, или модальные диалоги (меню).
"Alyas" <51696@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:2732581@news.rsdn.ru... >А>Enter OnMyMessage 3340 > А>Enter OnMyMessage 3340 > А>Leave OnMyMessage 3340 > А>Leave OnMyMessage 3340 > > А>Может кто то раньше с таким сталкивался. > > А>заранее спасибо > > Ну и чего тут не так — если из разных потоков? Нужно "правильное" выполнение — используй CriticalSection
И чего что из разных потоков? Обработчик то сообщения работает в своем потоке!?!
Странно то, что у него до того как обработчик вышел из первого раза, уже вошел во второй раз. Такого быть не должно.
Проверь LOGMSG ? Может быть это она асинхронна )? Или просто где-то случайно 2 раза выводишь лог!?!
Мистика какая-то! Обработчик сообщения должен сначала выйти из первого вызова, и только потом попасть туда второй раз... Не! Сдается мне тут чего-то не так, либо логи тупят либо еще что-то...
Здравствуйте, rus blood, Вы писали:
RB>В твоем обработчике сообщения есть прокрутка цикла сообщений. RB>Или явные циклы, или функции ожидания с прокруткой сообщений, или модальные диалоги (меню).
еще COM вызовы могут иметь такие последствия — тоже где-то неявно крутят цикл выборки сообщений