Здравствуйте VVV, Вы писали:
S>>Дело в том, что переделать под эвенты пока, боюсь не получится, ибо проект никто не даст ломать. Мне бы выяснить, куда эти мессаги вдруг деваются.... Что за засада
VVV>очень похоже на deadlock (причём это очень сложно ловится, к сожалению), например: главная нитка (с главным окном) решает завершиться, шлёт в другую нитку сообщение о завершении и садится в WaitForSingleObject(, INFINITE) ждать когда же та закончит свою работу, а в этот момент (может быть и сообщение о завершении ещё не пришло) та нитка решает послать в главное (или другое в главной нитке) окно сообщение с помощью SendMessage() и.... тут то deadlock и пришёл, т.к. главная нить сидит в WaitForXXX и не обрабатывает очередь сообщений, а SendMessage без ответа тоже не завершится.
Ух ты! Точно-точно, что-то очень близкое: мой трабловый срэд в цикле вызывает метод класса, который посылает в главное приложение сообщение. Только я использую PostThreadMessage для их отправки в главное приложение, т.е. не жду подтверждения о приеме....
И пока не понятно, где этот дэдлок случается, почему срэд виснет? Может ли функция PostThreadMessage не вернуться, если, например главное приложение, в которое посылается это сообщение уже находится в "состоянии нестояния" — ExitInstance()?
Ну, чудеса...
Спасибо за ответ, это натолкнуло на новые мысли!