Without seeing your code it is really hard to answer.
Since you're communicating with a VB6 program, I would assume that you are not using prefix mode to communicate, since the data arrives asynchronously that means that the bytes you are receiving from the VB6 program may arrive in various length packets at different intervals; and you need to allow for that.
You should implement the prefix mode handling on your VB6 side if possible and initialize with prefix, or use some type of STX / ETX / EOT indicators to frame your byte stream.
If you are using prefix mode then disregard the above