C #: forma correcta de cerrar SerialPort con Winforms

Tengo una aplicación donde leo desde el puerto serie, todo va bien, hasta que cierro la aplicación. Cuando hago clic en [X] la aplicación simplemente se bloquea, la interfaz de usuario: no responde.

Leí desde el puerto en el controlador de eventos DataReceived, y cierro el puerto cuando ocurre FormClosed:

    private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
    {
        mySerialPort.Close();
    }

Respuestas a la pregunta(4)

Su respuesta a la pregunta