gpt4 book ai didi

c# - 在处理完消息之前不要收听 Windows 服务

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:44 25 4
gpt4 key购买 nike

我正在创建一个在 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);
}

最佳答案

如果您已经在使用 Listen 方法接收消息。我不确定您为什么要连接到 MessageReceived 事件。我可能会将 MQ_MessageReceived 事件重命名为 HandleMessage 删除 MessageReceived 事件处理程序,然后只做一些简单的事情。

void ProcessCode()
{
同时(真){
//假设 Listen 方法阻塞并等待接收消息。
var message = theListener.Listen("manager, "theQueue");
处理消息(消息);
}
}

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

关于c# - 在处理完消息之前不要收听 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com