C# 中 HashTable在多线程环境中的遍历异常
2019-03-01 14:55
330 查看
C# 中 HashTable在多线程环境中的遍历异常
今天在工作中遍历Hashtable时遇到了一个问题,本来认为Hashtable是线程安全的,不会存在异常。偏偏在调试时,就抛出了这个异常。
现在就来看看这个异常。
测试代码:
class Program { static void Main(string[] args) { Hashtable hashtable = new Hashtable(); //创建Hashtable对象 for (int i = 0; i < 100; i++) //先添加一些数据 { hashtable.Add("key" + i, "object" + i); } Thread th = new Thread(Prnit); //创建一条线程来遍历hashtable th.IsBackground = true; th.Start(hashtable); Thread.Sleep(20); for (int i = 100; i>0; i--) { //主线程向hashtable中删除数据 hashtable.Remove("key"+i); } Console.ReadKey(); } static private void Prnit(object o) { Hashtable hashtable = o as Hashtable; while (true) { foreach (string str in hashtable.Values) //使用foreach来遍历hashtable { Console.WriteLine(str); } } } }
运行代码,抛出异常
System.InvalidOperationException:“集合已修改;可能无法执行枚举操作。”
相关文章推荐
- C# 在多线程环境中,进行安全遍历操作
- c#hashtable 遍历
- c++多线程在异常环境下的等待
- How to handle crash problem? (1.结合Dr.Watson系统日志和Vc6来定位多线程环境下程序异常退出的错误)
- C#中hashtable的赋值、取值、遍历、排序操作
- 实战:结合Dr.Watson系统日志和Vc6来定位多线程环境下程序异常退出的错误
- C#中遍历Hashtable的4种方法
- C#控制台基础 往hashtable中再次添加已存在的键值对,会出现异常,应用containskeys解决
- C# 多线程下 静态类字段异常
- C#遍历访问Dictionary和HashTable
- 【转】C#多线程环境下调用 HttpWebRequest 并发连接限制
- C#中Hashtable的遍历办法
- C# 遍历Hashtable
- SimpleDateFormat 多线程环境下慎用,会报异常
- C#使用foreach遍历哈希表(hashtable)的方法
- 实战:结合Dr.Watson系统日志和Vc6来定位多线程环境下程序异常退出的错误
- C#遍历访问Dictionary和HashTable
- Win8 x64环境下VS2010 C#工程运行报错:没有注册类 (异常来自 HRESULT:0x80040154
- 【转】C#多线程环境下调用 HttpWebRequest 并发连接限制
- C#遍历访问Dictionary和HashTable