DataGridView not updating in UI when underlying datasource changes
===

I am creating a small Windows Form application that will receive messages from a background thread and then add them to a List on the Main form. On the form I have a **DataGridView** with the **DataSource** set to the message list (*e.g. `List<Message>`*)

At the moment, messages are piling up but I can't get the **DataGridView** to render the messages as they arise. Here is a summary of the approach I have used.

**1.** Initialize the main form setting the binding and startnig the message routines

    internal Main(IMessageDispatcher messageDispatcher, IMessagePublisher messagePublisher)
    {
        InitializeComponent();
    
        _messageEntries = new List<Message>();
    
        BindToMessageEntriesList();
    
        _messageDispatcher = messageDispatcher;
        _messageDispatcher.OnMessageReceived += MessageDispatcher_OnMessageReceived;
        _messageDispatcher.Start();
    }
    
    private void BindToMessageEntriesList()
    {
        MessageEntriesGrid.DataSource = _messageEntries;
    }

**2.** Process received messages and add to the internal list

    private void MessageDispatcher_OnMessageReceived(Message message)
    {
        lock (_logEntries)
        {
            _messageEntries.Add(message);
        }
    
        var cb = new RefreshListCallbackDelegate(RefreshView);
        this.Invoke(cb);
    }

**3.** Refresh on the main thread

    private void RefreshView()
    {
        MessageEntriesGrid.Refresh();
    }

Can anyone suggest how I can get the UI to reflect the changes as they occure. 

*Note: I have also tried using the Invalidate method and the ResetBindings method. I also tried switching the List to an `ObservableCollection`*