My question is how do you update your ui, with data from serialport, while still updating other ui components? I have tried using a background worker, but it seems to block the ui, while the data is streaming in.
Image of form:
My code is:
public partial class Form1 : Form
{
    static bool _continue;
    static SerialPort _serialPort;
    BackgroundWorker dataWorker;
    string message;
    public delegate void UpdateListboxData();
    private void buttonPortConnect_Click(object sender, EventArgs e)
    {
        // Set the read/write timeouts
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;
        _serialPort.Open();
        _continue = true;
        dataWorker = new BackgroundWorker();
        dataWorker.RunWorkerAsync();
        dataWorker.DoWork += StartDataWork;
    }
    private void StartDataWork(object sender, DoWorkEventArgs e)
    {
        Delegate del = new UpdateListboxData(DataRead);
        this.Invoke(del);
    }
    private void DataRead()
    {
        while (_continue)
        {
            try
            {
                message = _serialPort.ReadLine();
            }
            catch (TimeoutException) { }
        }
    }
}

 
     
     
     
    