Recepción de mensajes parte por parte del puerto serie usando c #

Estoy usando el siguiente código para recibir los mensajes del puerto serie usando c #

    void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if (comPort.IsOpen == true)
        {
            string msg = comPort.ReadExisting();
            MessageBox.Show(msg.Trim());
        }
    }

El problema es que recibo los mensajes parte por parte. Me gusta, si envía "Hola, ¿cómo estás?" Lo estoy recibiendo palabra por palabra. Quiero eso en un solo tramo. Como lo puedo hacer ??

Además, ¿es posible recuperar el nombre del puerto desde el cual la aplicación envía y recibe mensajes?

Respuestas a la pregunta(3)

Su respuesta a la pregunta