I dont use VB Express (Im still on VB6) so wasnt sure what comport.Readline() did. Obviously it reads data from the comport but the "Readline" bit was what I wondered about.

A quick google pointed me at this page which although about c# does use the same methods

http://www.codeproject.com/csharp/Se...munication.asp

This bit is interesting.....
ReadLine(): Reads up to the NewLine value in the input buffer. If a New Line is not found before timeout, this method returns a null value.

Does the PIC return a string terminating with CR or LF ?

In VB6 there is a command "Do Events" which allows the program to do other things as well, maybe your program is reading nothing from the comport and getting stuck in an infinate loop.