Can anyone point me to a working example that uses the .net 4.5 Async API (async, await, task<>, ReadAsync, etc) to do serial communications?
I\'ve tried to adapt
I think a good deal of your problem is having the user trigger ReadDataAsync, and allowing it to be triggered while there is still a read in progress (from your description).
The right way to do this is to start a read when the serial port is opened, and in the completion handler for the read, start another one (well, check that the completion wasn't caused by closure of the port).
Simultaneous reads from a serial port are useless anyway, because you can't control the order in which incoming data will be handed off to complete routines.