C# 一个线程在对list进行add操作,另一个线程要对这个list中的数据进行处理,处理之后要删除,该如何实现?

Code生涯刚开始 2017-09-11 04:18:24
现在在做一个抓包程序,将抓到的包在WinForm中的chart控件中统计画图。
抓包是通过Raw Socket异步实现,由于数据量较大,每抓到一个数据包就画图会导致界面假死
现在我的处理方式是建立两个list,将其中一个list 的地址传给抓包线程,抓到包后,add到list中,然后新开一个Timer.Thread,计时结束后,将另一个list的地址传给抓包线程,然后将之前缓存的list输出到界面画图然后清空
但是这样还是会出现两个线程访问同一个list的错误,请问有什么方式可是解决吗?
本人编程小白,感觉我的方式出现问题是因为画图操作时间太长,两个缓存太少?请大神指点!
...全文
1055 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
闭包客 2017-09-11
  • 打赏
  • 举报
回复
在列表取出,删除,然后画图 和 在列表取出,画图,然后删除,写法还是有点不同的。
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
两个线程访问同一个list的错误 -》让两个线程”同步“一下,所搜 C# lock 关键字。
用lock是不是不太好,因为处理时画图,时间可能比较长
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
使用线程安全的泛型集合。 BlockingCollection<T> 替换List https://msdn.microsoft.com/zh-cn/library/dd267312.aspx
多谢,我试一下
  • 打赏
  • 举报
回复
用lock是不是不太好,因为处理时画图,时间可能比较长
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
使用线程安全的泛型集合。 BlockingCollection<T> 替换List https://msdn.microsoft.com/zh-cn/library/dd267312.aspx
+1
  • 打赏
  • 举报
回复
两个线程访问同一个list的错误 -》让两个线程”同步“一下,所搜 C# lock 关键字。
正怒月神 2017-09-11
  • 打赏
  • 举报
回复
使用线程安全的泛型集合。 BlockingCollection<T> 替换List https://msdn.microsoft.com/zh-cn/library/dd267312.aspx

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧