C#项目中List并发出现数据丢失如何解决-创新互联
C#项目中List并发出现数据丢失如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
class Program { static Listpersons; static void Main(string[] args) { persons = new List (); object sync = new object(); Parallel.For(0, 1000, (i) => { Person person = new Person { ID = i, Name = "name" + i }; lock (sync) persons.Add(person); }); Console.WriteLine(persons.Count); Console.ReadLine(); } class Person { public int ID { get; set; } public string Name { get; set; } } }
利用安全集合ConcurrentBag取代list
测试程序
using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyConcurrent { class Program { ////// ConcurrentBag并发安全集合 /// public static void ConcurrentBagWithPallel() { ConcurrentBaglist = new ConcurrentBag (); Parallel.For(0, 10000, item => { list.Add(item); }); Console.WriteLine("ConcurrentBag's count is {0}", list.Count()); int n = 0; foreach (int i in list) { if (n > 10) break; n++; Console.WriteLine("Item[{0}] = {1}", n, i); } Console.WriteLine("ConcurrentBag's max item is {0}", list.Max()); } /// /// 函数入口 /// /// static void Main(string[] args) { Console.WriteLine("ConcurrentBagWithPallel is runing" ); ConcurrentBagWithPallel(); Console.Read(); }
关于C#项目中List并发出现数据丢失如何解决问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
网站题目:C#项目中List并发出现数据丢失如何解决-创新互联
网页URL:http://pcwzsj.com/article/csgdic.html