Cómo mostrar los datos leídos en el controlador de eventos DataReceived de serialport

Tengo el siguiente código que necesita que los datos se lean desde el puerto y luego se muestren en un cuadro de texto. Estoy utilizando el controlador de eventos DataReceived para este propósito, pero no sé cómo mostrar estos datos en el cuadro de texto. De varias fuentes aprendí que el método Invoke debería usarse para esto pero no sé cómo usarlo. Sugerencias por favor ...

    private void Form1_Load(object sender, EventArgs e)
    {
        //SerialPort mySerialPort = new SerialPort("COM3");
        mySerialPort.PortName = "COM3";
        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceived);
        mySerialPort.Open();
    }

    private void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string s= sp.ReadExisting();
        // next i want to display the data in s in a textbox. textbox1.text=s gives a cross thread exception
    }
    private void button1_Click(object sender, EventArgs e)
    {

        mySerialPort.WriteLine("AT+CMGL=\"ALL\"");

    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta