gpt4 book ai didi

c# - 在 PeekCompleted 方法中从 messageQueue 中出队

转载 作者:行者123 更新时间:2023-11-30 15:03:45 25 4
gpt4 key购买 nike

我正在使用 PeekCompleted 从 MessageQueue 中读取消息,我在这里执行我的过程,如果一切正常,我需要将其从队列中删除!目前我正在使用 MyMessageQueue.Receive() 并且它有效,但这是确保正确处理每条消息的可靠方法吗?

    MessageQueue MyMessageQueue;
public Form1()
{
InitializeComponent();

MyMessageQueue = new MessageQueue(@".\private$\Dms");
MyMessageQueue.PeekCompleted += new PeekCompletedEventHandler(MessageQueue_PeekCompleted);
MyMessageQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
MyMessageQueue.BeginPeek();
}

void MessageQueue_PeekCompleted(object sender, PeekCompletedEventArgs e)
{
try
{
Debug.WriteLine("ToProcess:" + e.Message.Body);
//Long process that maybe fail
MyMessageQueue.Receive();
}
finally
{
MyMessageQueue.BeginPeek();
}
}

最佳答案

Receive() 接收队列中的第一条消息,将其从队列中移除。你需要什么是MessageQueue.ReceiveById Method

MyMessageQueue.ReceiveById(e.Message.Id);

其次,我认为,你总是需要调用MessageQueue.EndPeek Method

Message m = MyMessageQueue.EndPeek(e.AsyncResult);

关于c# - 在 PeekCompleted 方法中从 messageQueue 中出队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254531/

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