C#并行的Parallel.ForEach 和for循环的嵌套写入csv验证

目前这么些暂时没发现数据丢失问题,需要继续验证。

 

   string fullPath = @"C:\Users\cyan\Desktop\bbb.csv";
            FileStream fs = new FileStream(fullPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
            StreamWriter ObjWrites = default(StreamWriter);
            ObjWrites = new StreamWriter(fs,Encoding.Default);

//在如下双循环里面写入csv,涉及到多个线程共同写入,所以需要安全同步写入,否则会出现数据遗漏现象。
            dynamic swline = StreamWriter.Synchronized(ObjWrites);

   
 Parallel.ForEach(list2,i=>
            {
             
                string a1 = i.Name;
                double a2 = Convert.ToDouble(i.longa);
                double a3 = Convert.ToDouble(i.lata);
                foreach (var j in list)
                {
                    string b1 = j.Name;
                    double b2 = Convert.ToDouble(j.longa);
                    double b3 = Convert.ToDouble(j.lata);

                    if (a1 != b1)
                    {
                        double c1 = Distance(a2, a3, b2, b3);
                        if (c1 == 0)
                        {
                            string txt = string.Concat("并发:    ", ",", a1, ",", b1, ",", a2, ",", a3, ",", b2, ",", b3, ",", c1);
                            swline.WriteLine(txt);
                        }
                    }
                }                  
                  
            });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值