Кажется, я решил проблему.У меня есть два отдельных файла MDB для моего приложения и два отдельных фоновых потока - каждый из них имеет доступ к своему собственному файлу MDB соответственно (один поток использует один файл, другой - другой файл).Вначале я ошибочно предположил, что если эти потоки работают отдельно и имеют доступ к отдельным файлам, проблем не будет.
К сожалению, оказывается, что в вашем приложении может быть только одно соединение с любым файлом базы данных на любом моменте..
Теперь я блокирую доступ ко всем файлам, используя только одну блокировку для всех потоков (поэтому только один поток может получить доступ к любому файлу), и я больше не получаю сообщение об ошибке!
СпецифичноПример кода для тех, кто столкнулся с той же проблемой:
Object dbLock = new Object(); //make it a field in the database managing singleton class
В методе, используемом любым потоком, используйте:
lock(dbLock) //lock out db access from other threads (reserve for this thread only)
{
//here goes some code which will run only when the thread manages to lock the dbLock
//this code should accesses your database by creating and opening
//a new connection and then closing it in the same block
}
Как только этот блок завершится, другой метод может заблокировать доступ кбаза данных таким же образом