In my app, I have a code which refresh a GridView in an interval as below:
...
public void InitTimer()
{
timer1 = new System.Timers.Timer();
timer1.Elapsed += new ElapsedEventHandler(timer1_Tick);
timer1.Interval = 2000;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
string[] port_List = SerialPort.GetPortNames();
UpdateGridView(port_List);
timer1.Start();
}
public void UpdateGridView(string[] port_list)
{
Control.CheckForIllegalCrossThreadCalls = false;
Programmer_GV.Rows.Clear();
foreach (string port in port_list)
{
hx_communator = new Hx_Communator(port);
Programmer_GV.Rows.Add(port);
}
if (Programmer_GV.RowCount > 0)
{
int index = Programmer_GV.CurrentRow.Index;
Programmer_GV.Rows[index].Selected = true;
}
else
{
//Programmer_GV.Rows.Add(40);
}
}
...
When I run my code I get different exceptions.
Sometimes I get Operation cannot be performed in this event handler.'
on line Programmer_GV.Rows.Add(port);
Sometimes get Row index provided is out of range.
Parameter name: rowIndex'
on line Programmer_GV.Rows.Clear();
Sometimes get Specified argument was out of the range of valid values.
on line Programmer_GV.Rows.Clear();
And sometimes get 'Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.'
on line Programmer_GV.Rows.Clear();
I think my problem is on Programmer_GV.Rows.Clear();
line. I searched over the net and apply some other stack answers but none of them solved my problem.
Some of the links I search for my problem:
DataGridView Rows Error Index Out of Range c#
Index was out of range after deleting multiple rows from the datagridview? C#