我最开始的保存思路是将每条数据都添加到一条list ,因为要获取http返回的结果,所以添加时 是在异步返回结果后进行添加。然后每次异步发送时附带上本次总数据有多少,每次请求回调后,对比下当前list总数和传递时带过来的总数比较是否相等。相等则直接保存数据。这样有个弊端如果中间某个线程丢失,这样list总数和我们每次请求附带的总数就不一致了;这样则会导致数据对不上永远不会保存了。
最后的方案还是用队列实现 .Net里面的Queue或者线程安全的ConcurrentQueue;每次将数据都添加到队列里,然后定时从队列里取数据然后进行保存。队列的好处就在于数据的添加和移除互不影响。在多线程里面对数据的临时存储建议用队列 少用list.。