I don't know nothing about VBExpress, but i feel it's like VB6, so you should be able to use COMevents instead of a loop... which is certainely the killer situation.
If VBExpress don't have any ComEvents, you should be able to insert a Timer and check the serial com in a Timer interrupt.
Bookmarks