C# 将从套接字读取的数据添加到DataGridView(在c中)
我使用C创建了一个套接字侦听器。我想在DataGridWiew中立即列出在这个套接字上读取的数据。 大约每秒100个数据通过这个套接字传输 我成功地读取了套接字上的数据,但在尝试立即在DataGridView上列出数据时,屏幕冻结,直到数据流停止。 当数据流停止时,所有数据都列在DataGridView上。但是,我希望DataGridView在添加数据时能够成功地连续刷新 有没有办法在DataGridView中立即成功列出这么多数据 我在哪里犯错 守则:C# 将从套接字读取的数据添加到DataGridView(在c中),c#,sockets,datagridview,C#,Sockets,Datagridview,我使用C创建了一个套接字侦听器。我想在DataGridWiew中立即列出在这个套接字上读取的数据。 大约每秒100个数据通过这个套接字传输 我成功地读取了套接字上的数据,但在尝试立即在DataGridView上列出数据时,屏幕冻结,直到数据流停止。 当数据流停止时,所有数据都列在DataGridView上。但是,我希望DataGridView在添加数据时能够成功地连续刷新 有没有办法在DataGridView中立即成功列出这么多数据 我在哪里犯错 守则: frm.loggGrid
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);
}
我试图模拟一个快速的LINQPad示例。这将继续在后台添加新结果,而不会冻结应用程序 //简单GridView控件 DataGridView gridView=new System.Windows.Forms.DataGridView; gridView.Columns.AddA,A; gridView.Columns.AddB,B; gridView.Columns.AddC,C; //在LINQPad中显示控件 PanelManager.DisplayControlgridView; 等待任务。Runasync=> { whiletrue { //您的侦听器代码 var results=Enumerable.range0100.Selectx=>x.ToList; ifgridView.IsHandleCreated { //在UI线程上渲染 gridView.InvokeMethodInvokerdelegate { 对于int i=0;i