I receive UPDATE_TRADES whenever a trade or an order is open, closed, or modified; however, you should refresh BriefUserInfo and all open trades as well whenever price changes (UPDATE_BIDASK msg?).
There two posibilities that cause error with pumping messages:
1. Win32 message loop emulated in Linux is not as same as the true Win32 message loop. A team at Mono .Net Framework had reported that they were having quite a lot of issues with message loop, so they even had to implement their own version of msg loop from scrap up.
2. It can be connection problem. Unexpected disconnection can halt message loop. The only workaround I found so far is to check if ticks keep flowing.