不要收听消息直到消息处理Windows服务

时间:2015-10-23 15:31:48

标签: c#

我正在创建一个正在侦听MQ中的消息的Windows服务。我当前的代码似乎一遍又一遍地重新处理相同的消息。我想将此代码更改为仅开始侦听消息在当前消息完成处理后

这是我当前的代码,它保持循环相同的消息(处理消息大约需要6分钟)

 protected override void OnStart(string[] args)
        {
            var maincode = new Thread(ProcessCode);
            maincode.Name = "dud";
            maincode.IsBackground = false;
            maincode.Start();

        }

    void ProcessCode()
        {
            do
            {
                theListener.MessageReceived += new EventHandler<MessageReceivedEventArgs>(MQ_MessageReceived);

                IBM.WMQ.MQMessage mqMessage = theListener.Listen("manager", "theQueue");

                Thread.Sleep(5000);
            } while (true);
        }

1 个答案:

答案 0 :(得分:3)

如果您已使用Listen方法接收消息。我不确定你为什么要加入MessageReceived事件。我可能会将MQ_MessageReceived事件重命名为HandleMessage删除MessageReceived事件处理程序,并执行简单的操作。

void ProcessCode() { while(true) { //assuming that the Listen method blocks and waits for a message to be received. var message = theListener.Listen("manager, "theQueue"); HandleMessage(message); } }

另请注意,您可能需要输入一些逻辑,以便在需要关闭服务时停止处理消息。