private void UpdateTableGrid1(ActiveOrdersGridEventArgs e) { List <int> indexes = new List <int>(); for (int i = 0; i < dataGridView1.Rows.Count; i++) { string SName = dataGridView1.Rows[i].Cells[0].Value?.ToString(); if (SName == e.StrategyName) { indexes.Add(i); } } int shift = 0; foreach (int index in indexes) { dataGridView1.Rows.RemoveAt(index - shift); shift++; } foreach (ActiveOrders order in e.ActiveOrdersList) { dataGridView1.Rows.Add(e.StrategyName, order.OrderType, order.Direction, order.Amount, order.Price, order.Comment); } dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending); dataGridView1.Refresh(); }
public void OnUpdateActiveOrders(object sender, ActiveOrdersGridEventArgs e) { lock (LockObjectGrid1) { if (e.StrategyType != "Grid") { return; } if (dataGridView1.InvokeRequired) { dataGridView1.Invoke(new Action <ActiveOrdersGridEventArgs>((arg1) => { //ThreadPool.QueueUserWorkItem((x) => UpdateTable()); UpdateTableGrid1(arg1); }), e); } else { UpdateTableGrid1(e); } } }