data是一个绑定到listview.itemsource的table表格,col2,col3,col4,primarykey是table的列名 ThreadPool.QueueUserWorkItem(state => { while (true) { Random rd = new Random(); string primaryKey = string.Format("PrimaryKey:{0}", rd.Next(0, 10)); var row = data.FindByprimaryCol(primaryKey); if (row == null) { row = data.NewMyDataRow(); row.primaryCol = primaryKey; row.col1 = 1; row.col2 = string.Format("col2:{0}", rd.Next(0, 1000)); row.col3 = string.Format("col3:{0}", rd.Next(0, 1000)); row.col4 = string.Format("col4:{0}", rd.Next(0, 1000)); this.Dispatcher.Invoke(new Action(() => data.Rows.InsertAt(row, 0))); //此处一定要invoke,否则新增加的行不能显示到界面 } else { //下面这一段不通过invoke也能更新出界面数据,我想了解这样直接更新和通过invoke更新有区别么,没有区别的话是不是说只要不是添加新数据都不必去通过invoke函数来处理 row.col1 = row.col1 + 1; row.col2 = string.Format("col2:{0}", rd.Next(0, 1000)); row.col3 = string.Format("col3:{0}", rd.Next(0, 1000)); row.col4 = string.Format("col4:{0}", rd.Next(0, 1000)); } Thread.Sleep(1000); } });
110,534
社区成员
642,576
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧