I had the same issue when communicating with Aglient/Keysight E3642A power supply. Using WPF.
Adding the line below "port.DtrEnable = true;" fixed the problem with getting a response from the power suppy.
I am not clear why you wouldn't use ReadExisting (if this method existed in 2017) to access the data returned from the serial device.
Thank you OriginalGriff!
port = new SerialPort();
port.PortName = "COM3";
port.BaudRate = 9600;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.Two;
port.Handshake = Handshake.XOnXOff;
port.DtrEnable = true;
port.ReadTimeout = 5000;
port.WriteTimeout = 2000;
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
_elements.Reply += sp.ReadExisting();
}