【发布时间】:2017-03-15 04:38:56
【问题描述】:
IDE:VS 2010,Winforms:
我有一个简单的 msmq 发送/接收应用程序,我有一个要求,我将读取消息并根据消息,如果该函数未准备好,我将调用其他函数,然后我希望消息在队列中。
我的 Msmq 发送接收代码:
private void button1_Click(object sender, EventArgs e)
{
//MSMQ Send :
if (MessageQueue.Exists(@".\Private$\MyQ"))
{
myQ = new MessageQueue(@".\Private$\MyQ");
}
else
{
myQ = MessageQueue.Create(@".\Private$\MyQ");
}
string xmlText = getxmlString();
System.Messaging.Message msg = new System.Messaging.Message();
msg.Formatter = new XmlMessageFormatter();
msg.Body = xmlText;
msg.Label = "MyXmlMessage";
msg.Priority = MessagePriority.Normal;
myQ.Send(msg);
}
private void button2_Click(object sender, EventArgs e)
{
//MSMQ Receive
myQ = new MessageQueue(@".\Private$\MyQ");
System.Messaging.Message myMsg = myQ.Receive();
myMsg.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
bool IsValidated = Validate(myMsg.Body.ToString());
}
internal void Validate(string message)
{
//some logic
return false;
}
正如您在接收代码中看到的,我正在接收回消息并验证消息,这里我希望仅当 IsValidated 为真时才从队列中删除该消息,
基本上,我想防止自动删除消息未来为假,并希望在验证后删除队列中的该消息。
你能告诉我我应该做哪些修改来实现这个目标。
【问题讨论】:
标签: c# winforms visual-studio-2010 msmq