我在Close()
上调用Dispose()
或MessageQueue
时遇到问题。我有一个应该能够管理这些消息队列的应用程序。打开并关闭它们。
但是,当我致电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应用程序在需要时调用该方法。
如何实际关闭或处置队列?
答案 0 :(得分:3)
Close
或Dispose
仅适用于您的消息队列C#对象的实例。它们不会影响实际的消息队列。与处理数据库连接的方式相同,不会自动从服务器中删除整个数据库。
您需要使用MessageQueue的静态Delete方法。