Я использую SqlTableDependency
для мониторинга и получения уведомлений об изменении таблицы записей, через несколько дней мое приложение сильно замедлилось, когда я открываю свою базу данных в SQL Server Management Studio, я вижу, что многие процедуры и некоторые другие объекты, которые создалис SqlTableDependency
остались в базе данных, как я могу ее решить?
См. это:
По запросу Дана Гусмана,я добавляю мой код ниже:
BackgroundWorker _bw_ProductBroker = new BackgroundWorker();
_bw_ProductBroker.DoWork += (a, b) =>
{
var _ProductMapper = new TableDependency.SqlClient.Base.ModelToTableMapper<ProductM>();
_ProductMapper.AddMappingAllProperties();
SqlTableDependency<ProductM> _Broker;
while (true)
try
{
b.Result = _Broker = new SqlTableDependency<ProductM>(MainVM.ConnectionString, _db.GetTableName<ProductM>(), mapper: _ProductMapper);
_Broker.OnChanged += ((NewAddFactorVM)b.Argument)._TblProductListener_OnChanged;
_Broker.OnStatusChanged += ((NewAddFactorVM)b.Argument)._TblProductListener_OnStatusChanged;
_Broker.Start();
break;
}
catch { Thread.Sleep(TimeSpan.FromSeconds(1)); continue; }
};
_bw_ProductBroker.RunWorkerCompleted += (a, b) =>
{
_TblProductListener = (SqlTableDependency<ProductM>)b.Result;
_bw_ProductBroker?.Dispose();
};
_bw_ProductBroker.RunWorkerAsync(this);
, как вы видите в приведенном выше коде, я инициализирую объект SqlTableDependency в BackgroundWorker, а затем передаю его моему классу и, наконец, располагаю объект BackgroundWorker, иногда при создании объекта или его запускевозникает ошибка, поэтому я помещаю ее в блок try / catch, и, когда возникает ошибка, я продолжаю цикл для запуска снова, и это весь мой код!