C# 如何避免异常”集合已修改;可能无法执行枚举操作。“

C# 如何避免异常”集合已修改;可能无法执行枚举操作。“

using System;

using System.Collections.Generic;

using System.Text;

using LogHandler;

using System.Threading;

namespace ConsoleApplication5

{

    class Program

    {

        private static List<string> lstShare = new List<string>();

        static void Main(string[] args)

        {

 

            Thread th1 = new Thread(thread1);

            th1.Start();

            Thread th2 = new Thread(thread2);

            th2.Start();

 

 

        }

 

        private static void thread1()

        {

            //该线程不停地独占列表,并追加数据

            while (true)

            {

                lock (lstShare)

                {

                    lstShare.Add(“aaa”);

                }

            }

        }

 

        private static void thread2()

        {

            //该线程是期望创建一个共享列表的独立镜像,然后对镜像进行费时的操作

            while (true)

            {

                try

                {

                    List<string> lstTemp = new List<string>();

                    lock (lstShare)

                    {

                        lstTemp = lstShare;//如果使用这一句来创建镜像,就会发生异常

 

                        #region “正确的做法”

                        //foreach (string item in lstShare)

                        //{

                        //    lstTemp.Add(item);

                        //}

                        #endregion

                    }

 

                    foreach (string item in lstTemp)

                    {

                        //do nothing

                        Thread.Sleep(1);

                    }

                }

                catch (System.Exception ex)

                {

                    Console.WriteLine(ex.Message);

                }

 

            }

        }

    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110247.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 散列/散列函数「建议收藏」

    散列/散列函数「建议收藏」散列是一种用于以常数平均时间执行插入、删除和查找的技术。每个关键字被映射到从0-TableSize-1这个范围中的某个数,并且被放到适当的单元中。这种映射就叫做散列函数我认为,先用散列函数将我们所要进行操作的集合整合成散列表,是对之后的操作的一种便利。放到实际中去,我们要进行操作的集合不仅仅只是数字,例如图书馆中的书籍分类等等。而且就算是一组不连续差距较大的数字,要执行后序的插入删除和查找都是很不方

    2022年5月15日
    41
  • java实现Math.sqrt函数

    java实现Math.sqrt函数难易程度:★★★重要性:★★★★★度小满金融的面试中出现过:自己实现Math.sqrt函数//计算:Math.sqrt(num)//原理:牛顿迭代法://https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95/10887580?fr=aladdinprivate…

    2022年5月20日
    63
  • 贵金属黄金投资基础知识及技术交易篇「建议收藏」

    贵金属黄金投资基础知识及技术交易篇「建议收藏」贵金属黄金投资基础知识及技术交易篇  一、影响贵金属价格波动的因素  我们通常所说的贵金属主要指黄金和白银,由于它们的属性有很多共同点,所以价格走势基本相同,影响价格的因素也大同小异,皇玛hmcfds贵金属交易平台小编讲讲贵金属交易的基础知识:  1、供需关系:任何商品价格的波动本质因素都是供需关系的变化,贵金属也不例外。如果产量大幅增加就可能导致贵金属价格的下跌,如果投资交易、实物首…

    2022年5月8日
    44
  • C语言 | 编写一个简单的定时关机程序「建议收藏」

    C语言 | 编写一个简单的定时关机程序「建议收藏」前言今天,我同学问我这个程序怎么做:于是,我用C给他写了一个类似的控制台程序:我的这个控制台程序有8个小功能,分别是:1、定时n秒后自动关机。2、定时到x点x分提醒你是否要关机,如果你没…

    2022年7月22日
    12
  • 一步使你的asp.net网站在手机浏览器上全屏显示

    一步使你的asp.net网站在手机浏览器上全屏显示

    2021年9月2日
    59
  • http://bdsmdvdtube.com/ 罪恶无处不在

    http://bdsmdvdtube.com/ 罪恶无处不在http://bdsmdvdtube.com/

    2022年7月1日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号