Проблема с удалением объекта 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);
Другие вопросы по тегам