You can only access the grid (or any other Windows Forms control) on the thread that created it. The m_OnUpdate handler is being called from nonUI threads, so you have to recall it on the UI thread that created the grid.
private void m_OnUpdate(Manager m)
{
Int32 row = m_Managers.IndexOf(m) + 1;
if(this.gridControl1.InvokeRequired)
{
Console.WriteLine("InvokeRequired");
this.gridControl1.BeginInvoke(new OnUpdateDelegate(m_OnUpdate), new object[]{m});
return;
}
gridControl1.RefreshRange(GridRangeInfo.Cells(row, 1, row, 5));
}