Я новичок в служебной шине Azure и теперь застреваю при попытке закрыть прослушиватель подписки.
Я пытаюсь переключить свое приложение с одной подписки topi c на другую , но когда я закрываю соединение с предыдущей подпиской, оно начинает давать мне исключение, что слушатель не может использоваться на закрытом объекте (предыдущая подписка, которую я закрыл). это означает, что поток слушателя еще не был остановлен, поэтому сейчас я пытаюсь найти способ закрыть поток слушателя для старой подписки. Но я не могу найти в Google ничего о закрытии соединений или переключении подписок, я также ничего не нашел, просто просматривая код.
Я закрываю подписку следующим образом:
public void SetData(SessionData data)
{
// set the session data
SessionData = data;
if (_handler != null)
{
_handler.CloseConnection();
}
// make sure handler is clear before setting a new one
_handler = null;
// convert subscription emum to string
string subscriptionName = Enum.GetName(typeof(Subscriptions), SessionData.subscription);
// assign handler
_handler = new ServiceBusTopicHandler(SessionData.connectionString, SessionData.topic, subscriptionName, ProcessMessagesAsync);
}
public async void CloseConnection()
{
await subscriptionClient.CloseAsync();
await topicClient.CloseAsync();
}
public class SessionData
{
public string connectionString { get; set; }
public string topic { get; set; } = "chat";
public Subscriptions subscription { get; set; } = Subscriptions.ChannelOne;
public string sessionCode { get; set; }
}