C# 侦听消息队列
我正在尝试创建一个控制台应用程序,用于侦听本地计算机上的消息队列。这是到目前为止我的代码C# 侦听消息队列,c#,msmq,C#,Msmq,我正在尝试创建一个控制台应用程序,用于侦听本地计算机上的消息队列。这是到目前为止我的代码 static void Main(string[] args) { var _queue = new MessageQueue(@".\private$\testing"); _queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) }); _queu
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条,有时读全部
发生了什么事,我做错了什么吗?BeginReceive方法是,因此它不会阻止
main()
退出
您只需添加一个
Console.ReadKey()在main()
的末尾添加code>以防止出现这种情况,直到用户交互为止。谢谢!你救了我的命day@Servy我认为这不是重复的,这不是同一个问题。@Jimbot这是重复的,因为这是同一个问题。