Я знаю, что это старый вопрос. Я столкнулся с точно такой же проблемой сегодня. В некоторых комментариях спрашивается, зачем использовать ADOX, потому что, во-первых, это из унаследованного кода, а во-вторых, я не нашел других способов динамического создания файла MDB.
В VB6 всякий раз, когда вы устанавливаете adox = Nothing, этот com-объект будет немедленно освобожден, как и файл ldb.
В .Net вы должны полагаться на сборщик мусора, прежде чем файл ldb будет разблокирован.
Итак, я сделал следующий трюк. Я знаю, что это некрасиво, но я не нашел других путей, и по крайней мере мой трюк сработал.
Dim t As New Thread(
Sub
'All adox code should be here
'....
'....
adox = Nothing
End Sub
)
t.Start()
t.Join()
t = Nothing
GC.Collect()
Sleep(50)