将消息添加到消息数组

时间:2014-01-30 15:30:42

标签: c# msmq message-queue

如果我声明了一个消息数组并且我还有一个MessageEnumerator,我怎样才能将枚举器的当前消息添加到数组中?

Message[] m = null;
MessageEnumerator me = q.GetMessageEnumerator2();
for (int i = 0; i < 10; i++)
    {
        me.MoveNext();
        Array.Resize(ref m, m.Length + 1);
        m[m.Length - 1] = // the current message?
        me.RemoveCurrent();    
     }

任何提示都赞赏

感谢

1 个答案:

答案 0 :(得分:2)

将消息放入列表然后将其转换为数组:

List<Message> ml = new List<Message>();

MessageEnumerator me = q.GetMessageEnumerator2();

for (int i = 0; i < 10; i++)
{
    me.MoveNext();
    ml.Add(me.Current);
}

Message[] m = ml.ToArray();

另一方面,你不应该在IEnumerable迭代(使用索引),你应该用这种方式枚举

List<Message> ml = new List<Message>();

foreach (Message mx in q.GetMessageEnumerator2())
{
    ml.Add(mx);
}

Message[] m = ml.ToArray();

你甚至可以将IEnumerator直接倒入一个新的清单,但这太紧了,甚至不再有意义了:

List<Message> ml = new List<Message>(q.GetMessageEnumerator2());
Message[] m = ml.ToArray();