public void DisconnectOnWriteAsyncBlocked() { byte[] buffer = new byte[8192]; using (SerialPortStream serialSource = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) using (SerialPortStream serialDest = new SerialPortStream(DestPort, 115200, 8, Parity.None, StopBits.One)) { serialSource.ReadBufferSize = 8192; serialSource.WriteBufferSize = 8192; serialDest.ReadBufferSize = 8192; serialDest.WriteBufferSize = 8192; serialSource.Handshake = Handshake.Rts; serialSource.Open(); serialDest.Open(); serialDest.RtsEnable = false; Thread.Sleep(100); Assert.That( () => { while (true) { Console.WriteLine("DisconnectOnWriteAsyncBlocked BeginWrite"); IAsyncResult ar = serialSource.BeginWrite(buffer, 0, buffer.Length, null, null); Console.WriteLine("DisconnectOnWriteAsyncBlocked EndWrite"); serialSource.EndWrite(ar); } }, Throws.InstanceOf <System.IO.IOException>()); // Device should still be open. Assert.That(serialSource.IsOpen, Is.True); serialSource.Close(); } }