WM_COPYDATA i zakleszczenie?

0

Witam,

Piszę właśnie komunikację między dwoma aplikacjami opierającą się na przesyłaniu komunikatów WM_COPYDATA. We wszystkich przykładach jakie znalazłem prezentowana jest komunikacja jednostronna - pierwszy program wysyła, drugi odbiera. Chcę analogicznie zrobić komunikację dwustronną ale trapi mnie jedna rzecz. Mianowicie kiedy pierwsza aplikacja wysyła wiadomość przez SendMessage (co powoduje czekanie na obsłużenie tego komunikatu) druga aplikacja otrzymuje ten komunikat i natychmiast wysyła odpowiedź również wołając SendMessage (i również czeka na obsłużenie tego komunikatu). Teoretycznie powinno dojść do zakleszczenia, przecież oba programy czekają na zakończenie obsługi swojego komunikatu. Jednak w moich testach żadnego zakleszczenia nie ma. Nawet jak pierwszy program w pętli wysyła 100 komunikatów to drugi bez problemu na każdy odpowiada i jest on obsłużony przez przez pierwszy program mimo że jest on cały czas w pętli. Jak to możliwe? Co się tam dzieje za tą kurtyną? Jakoś burzy to moją koncepcję o obsłudze kolejki komunikatów. Mogę dla pewności użyć PostMessage ale alokuję jakiś obszar w pamięci i wtedy odbiorca jest zobowiązany do jego zwolnienia.

Pozdrawiam

0

Mozliwe ze system zabezpiecza sie przed takim zakleszczeniem i w niebezpiecznym momencie SendMessage zadziala jak PostMessage...?
Moze podejrzyj WinSight'em w jakiej kolejnosci sa wysylane/odbierane komunikaty albo zrob jakis log w swoich programach, mozna tez pomyslec nad SendMessageCallback()

1 użytkowników online, w tym zalogowanych: 0, gości: 1