C#项目在很短的时间内为空?
发布时间:2020-12-16 01:26:16 所属栏目:百科 来源:网络整理
导读:我有一个MessageQueue类,其中包含一个充当队列的私有List属性.只有一种方法可以添加到队列中(通过Add方法)和一种从队列中获取的方法(通过Next方法).我有一个线程运行没有延迟不断检查队列.偶尔,null项进入队列. 如果要添加的项为null,我在Add方法中放置一个
我有一个MessageQueue类,其中包含一个充当队列的私有List属性.只有一种方法可以添加到队列中(通过Add方法)和一种从队列中获取的方法(通过Next方法).我有一个线程运行没有延迟不断检查队列.偶尔,null项进入队列.
如果要添加的项为null,我在Add方法中放置一个断点,但是从不命中断点. 如果返回的项目为null,那么我会在Next方法中放置一个断点. 此外,断点在获取项目之后但在调整队列之前设置.奇怪的是,当返回的项为null时,刚刚获取的项不为null!这是我的队列 – public class MessageQueue { private List<byte[]> queue = new List<byte[]>(); public void Add(byte[] payload) { if (payload == null) { Console.WriteLine("thats why"); } queue.Add(payload); } public byte[] Next() { byte[] hand = queue.First(); if(hand == null) { Console.WriteLine("asdf"); } queue = queue.Skip(1).ToList(); return hand; } public bool HasMessages { get { return queue.Count() > 0; } } } 这是队列中的内容 – 以下是手中的内容 – 因为我在队列中使用First,所以如果没有项目则会抛出错误. 事实上,为了确保与某种方式无关,我在第一次调用中放置了一个try-catch,它永远不会被击中. 如果从未将null添加到队列中,并且队列中的第一项不为空,那么hand null如何? 解决方法
列表与LT;>
is not thread safe
如果您从不同的线程访问它,您可以看到它处于损坏的状态. 如上所述:“ConcurrentQueue很可能是您需要使用的” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – 如何使用Draper 0.14.0访问装饰器规范文件
- webBindingInitializer 在XML中无效,spring mvc 3.2以版本
- 对比两个目录中的文件改动
- 如何在XML文档中创建xmlns:xsi和xsd信息
- c – 平方根元函数?
- React Native 中切换TextInput保持键盘展开
- c# – ServiceStack在没有MVC的情况下启用Razor intellisen
- cocos2d-iphone – 使用cocos2d游戏的状态设计模式
- c – 如何从上面定义的类中访问类?
- ORA-01078: failure in processing system parameters LRM-