I had also encountered the same issue with RS232 communication. The reason behind this issue is your program executes faster than the slow serial communication.
The solution of the issue is as follows :
Stream s = this.GetStream();
IAsyncResult ar = s.BeginWrite(data, 0, data.Length, SendAsync, state);
Please Note: Most of the time ar.IsCompleted is true.