For inserting in a datagrid I'm using the following logic:
yourDataGridView.Rows.Clear();
SqlCommand cmd = new SqlCommand(YourSqlQuery, dbConnection);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
yourDataGridView.Rows.Add(dr[0].ToString(), (bool)dr[1], (int)dr[2]);
}
dr.Close();
If you're working with differen threads, collecting the data, you could add the data from the SqlDataReader into a DataTable and pass it to your UI Thread to fill the DataGrid.
For updating single values of your DataGrid you could use something like this:
yourDataGridView.Rows[RowIndex].Cells[CellIndex].Value = yourNewValue;