Я работаю со сторонней библиотекой, которая предоставляет доступ к базе данных. В объекте соединения с базой данных есть событие с именем Updated
, которое срабатывает при каждом изменении базы данных.
Я сталкиваюсь с проблемой, когда мой делегат хочет прочитать из базы данных. Похоже, что соединение имеет ReaderWriterLock
защиты базы данных. Во время вызова ExecuteNonQuery
блокировка записывающего устройства берется, но не снимается до срабатывания события. Итак, я зашел в тупик в моем делегате, если я хочу читать.
Я начал писать отдельный поток, который брал бы событие из соединения с базой данных и передавал его зарегистрированным делегатам, но это было похоже на небрежное решение. Я упускаю простой способ справиться с этой проблемой?
Что меня действительно беспокоит, так это то, что я не всегда захожу в тупик. Однако когда я нажимаю на него и смотрю на стек вызовов, он полностью возвращается к точке, в которой я выпустил обновление.
Кстати, я использую библиотеку System.Data.SQLite .