我有一个MessageQueue带有私有List属性的类,它充当队列.只有一种方法可以添加到队列中(通过Add方法)和一种从队列中获取的Next方法(通过方法).我有一个线程运行没有延迟不断检查队列.偶尔,一个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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是队列中的内容 -
以下是手中的内容 -
因为我First在队列中使用,如果没有项目,则会抛出错误.
事实上,为了确保与某种方式没有关联,我在First呼叫周围设置了一个尝试 - 它从未被击中过.
如何为hand空当空从不添加到队列,并在队列中的第一个项目是不是null?
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |