I'm reading data from a GPS reciver (NMEA 0183 specification) through the serial port that sends data every second, and I also got this error every now and then, EVEN when using the suggested solution.
My solution..
My program use wait on event triggered by the termination character and when the error occurs I just remove the error, flush the buffer, (wait for the next termination character) and read again. Seems to work like a charm. 