Я создал слушатель сокета, используя C#. Я хочу перечислить данные, прочитанные на этом сокете, мгновенно в DataGridWiew. (около 100 данных в секунду передается через этот сокет) Я успешно прочитал данные в сокете, но при попытке мгновенно отобразить их в DataGridView экран зависает до тех пор, пока поток данных не прекратится. Когда поток данных останавливается, все данные отображаются в DataGridView. Но вместо этого я хочу, чтобы DataGridView успешно обновлялся непрерывно при добавлении данных.
Существует ли способ мгновенного отображения такого большого количества данных в DataGridView?
Где я делаю ошибки?
Код:
frm.loggGridView.ColumnCount = 5;
frm.loggGridView.ColumnHeadersVisible = true;
DataGridViewCellStyle columnHeaderStyle = new DataGridViewCellStyle();
columnHeaderStyle.BackColor = Color.Beige;
columnHeaderStyle.Font = new Font("Verdana", 10, FontStyle.Bold);
frm.loggGridView.ColumnHeadersDefaultCellStyle = columnHeaderStyle;
frm.loggGridView.Columns[0].Name = "ID";
frm.loggGridView.Columns[1].Name = "LATITUDE";
frm.loggGridView.Columns[2].Name = "LONGITUDE";
frm.loggGridView.Columns[3].Name = "ALTITUDE";
frm.loggGridView.Columns[4].Name = "TIME";
int i= 0;
try
{
PointF p1;
while (true)
{
byte[] bytes = listener.Receive(ref groupEP);
String FlightData = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
// Console.WriteLine("broadcast veri {0} :\n {1}\n", groupEP.ToString(), FlightData);
String[] FlightDataSplit = FlightData.Split(' ', '\n');
p1 = new PointF(FlightDataSplit[1], FlightDataSplit[0], FlightDataSplit[2]);
frm.loggGridView.Rows.Add();
frm.loggGridView.Rows[i].Cells[0].Value = i;
frm.loggGridView.Rows[i].Cells[1].Value = p1.latitude;
frm.loggGridView.Rows[i].Cells[2].Value = p1.longitude;
frm.loggGridView.Rows[i].Cells[3].Value = p1.altitude;
frm.loggGridView.Rows[i].Cells[4].Value = DateTime.Now;
i++;
}
}
catch (Exception e)
{
Console.WriteLine(e);
}