在 MessageQueue 上调用 close() 或 Dispose() 不执行任何操作
本文关键字:执行 任何 操作 Dispose 调用 close MessageQueue | 更新日期: 2023-09-27 18:32:45
我在MessageQueue
上呼叫Close()
或Dispose()
时遇到问题。我有一个应该能够管理这些消息队列的应用程序。打开和关闭它们。
但是当我打电话给Close()
或Dispose()
什么也没发生。队列仍存在于计算机上。我使用 MessageQueue.GetPrivateQueuesByMachine()
方法获取一个 MessageQueue
数组,并且在调用 Close()
或 Dispose()
后它仍然存在。经过一番阅读,似乎Dipose()
应该是我使用的那个,但仍然如此。
这是我用来尝试关闭队列的代码
public String CloseQueue(String path)
{
if (GetQueueArray().Length == 0)
{
return "The Queue Array is Empty!";
}
foreach (MessageQueue m in GetQueueArray())
{
if (m.Path.Equals(path))
{
try
{
path = m.QueueName;
m.Close();
break;
}
catch (Exception e)
{
return e.Message;
}
}
}
return "Successfully Closed Queue at path: " + path;
}
方法GetQueueArray()
定义为这样(在同一类中):
public MessageQueue[] GetQueueArray()
{
return MessageQueue.GetPrivateQueuesByMachine(machinename);
}
我这样做只是为了方便我的 GUI 应用程序在需要时调用该方法。
如何实际关闭或处置队列?
Close
或Dispose
仅适用于消息队列 C# 对象的实例。它们不会影响实际的消息队列。与释放数据库连接不会自动从服务器中删除整个数据库的方式相同。
您需要使用 MessageQueue 的静态 Delete 方法。