【发布时间】:2017-12-09 07:00:23
【问题描述】:
我正在尝试创建一个控制台应用程序来侦听本地计算机上的消息队列。这是我到目前为止的代码..
static void Main(string[] args)
{
var _queue = new MessageQueue(@".\private$\testing");
_queue.Formatter = new XmlMessageFormatter(new Type[] {
typeof(string) });
_queue.ReceiveCompleted += new
ReceiveCompletedEventHandler(queue_ReceiveCompleted);
_queue.BeginReceive();
}
private static void queue_ReceiveCompleted(object source,
ReceiveCompletedEventArgs e)
{
MessageQueue mq = (MessageQueue)source;
Message msg = mq.EndReceive(e.AsyncResult);
Console.WriteLine(msg.Body.ToString());
mq.BeginReceive();
}
我的问题是这样的..首先程序退出
Console.WriteLine(msg.Body.ToString());
我没有收到队列中的其他消息。
所以我尝试不使用 Console.WriteLine 来查看是否从队列中读取了所有消息
private static void queue_ReceiveCompleted(object source,
ReceiveCompletedEventArgs e)
{
MessageQueue mq = (MessageQueue)source;
Message msg = mq.EndReceive(e.AsyncResult);
mq.BeginReceive();
}
但结果有时不一致,有时会读取 1 条消息,有时会读取 4 条消息,有时会读取全部消息。
那是怎么回事,我做错了吗?
【问题讨论】:
-
@Servy 我认为这不是重复的,这不是同一个问题。
-
@Jimbot 这是重复的,因为它是同一个问题。