我的程序运行很长时间,它将一些状态消息写入msmq。我还具有一个配置值,该值限制了长时间运行的过程所生成的消息数量。当我使用限制并且仅将生成的消息的1/50写入队列时,代码工作正常。 当我调用MSMQEnqueue的频率增加时,我的代码因访问冲突异常而崩溃。
例外是:
First-chance exception at 0x000007fef2096a15 in w3wp.exe: 0xC0000005: Access violation reading location 0x0000000000000000.
任何人都知道限制可能是什么吗?
// Retrieves or Creates private queues with the key and sends a message to it
public void MSMQEnqueue(string sKey, string sMessage)
{
MessageQueue queue = GetOrCreateQueue(sKey);
try
{
Message message = new Message();
message.Body = sMessage;
queue.Purge();
queue.Send(message);
}
finally {
queue.Dispose();
}
}
// Retrieves or Creates private queues with a key
public MessageQueue GetOrCreateQueue(string sKey)
{
MessageQueue queue;
// Create and connect to a private Message Queuing queue.
if (!MessageQueue.Exists(string.Format(".\\Private$\\{0}", sKey)))
{
// Create the queue if it does not exist.
queue = MessageQueue.Create(string.Format(".\\Private$\\{0}", sKey));
}
else
{
queue = new MessageQueue(string.Format(".\\Private$\\{0}", sKey));
}
queue.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
queue.MessageReadPropertyFilter.SetAll();
return queue;
}