前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 如何避免异常”集合已修改;可能无法执行枚举操作。“

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

作者头像
全栈程序员站长
发布2022-07-05 10:42:15
5730
发布2022-07-05 10:42:15
举报
文章被收录于专栏:全栈程序员必看

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.cn/110247.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年8月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档