zoukankan      html  css  js  c++  java
  • 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);

                    }

     

                }

            }

        }

    }

  • 相关阅读:
    ASP.NET MVC —— Model之一模型模板
    【转】METADATATYPE的使用,MVC的MODEL层数据验证
    bootstrap 全局 CSS 样式
    jQuery EasyUI API 中文文档
    基础知识--:before伪元素和:after伪元素
    960CSS框架,之前有用过 了解下框架基本原理
    CSS框架960Grid从入门到精通一步登天
    web网页的表单排版利器--960css
    文本编辑器Nano实用快捷键
    yum服务器设置
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/2828846.html
Copyright © 2011-2022 走看看