Проблема с удалением объекта Adox
Используя класс каталога ADOX, я пытаюсь создать пустую базу данных Ms Access. Код работает нормально (насколько я знаю) и генерирует базу данных, но когда я пытаюсь открыть базу данных из проводника Windows, я получаю сообщение "Не удалось использовать name.accdb; сообщение об ошибке "файл уже используется". Я проверил каталог файла, и файл name.idb также появился в каталоге без открытия базы данных. После того как я закрою приложение формы C# windows, name.idb исчезнет, и я смогу открыть базу данных. Вот код, который я использовал для создания базы данных с использованием ADOX.
public void CreateDatabase()
{
string databaseName = txtFileName.Text;
try
{
ADOX.Catalog cat = new ADOX.Catalog();
if (!File.Exists(databaseName + ".accdb"))
{
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\\" + databaseName + ".accdb" + ";");
cat = null;
}
cat = null;
}
catch (Exception e)
{
MessageBox.Show(e.Message, e.Source);
}
}
Я также попытался избавиться от объекта cat, реализовав интерфейс IDispaosable, но ничего не изменилось. Подскажите, пожалуйста, как я могу решить эту проблему: какой пользователь может открыть базу данных после создания приложением, не закрывая (убивая) приложение?
С уважением
1 ответ
Возможно, вам нужно отпустить объект. Попробуйте добавить следующее после вызова Create:
Marshal.FinalReleaseComObject(cat.Tables);
Marshal.FinalReleaseComObject(cat.ActiveConnection);
Marshal.FinalReleaseComObject(cat);