private void RefreshDgvPort() { if (string.IsNullOrWhiteSpace(selectFromIP) || string.IsNullOrWhiteSpace(selectToIP)) { return; } if (dgvPort.InvokeRequired) { var foo = new DelegateSetDgvPortData(this.RefreshDgvPort); this.Invoke(foo); } else { lock (lockPortObj) { dgvPort.Rows.Clear(); var data = list.Where(p => p.FromIP == this.selectFromIP && p.ToIP == selectToIP).GroupBy(p => new { p.FromPort, p.ToPort, p.ProcName }).Select(p => p.Key); foreach (var item in data) { dgvPort.Rows.Add(); dgvPort.Rows[dgvPort.Rows.Count - 1].Cells[0].Value = item.FromPort; dgvPort.Rows[dgvPort.Rows.Count - 1].Cells[1].Value = item.ToPort; dgvPort.Rows[dgvPort.Rows.Count - 1].Cells[2].Value = item.ProcName; } } } }