Многопоточный доступ SQLite.NET PCL МОНО

Я использовал SQLite.Net для Monodroid и Monotouch. Чтобы избежать проблем с доступом между потоками, я использовал этот код для установки режима Serialized.

    SQLite.SQLite3.Shutdown();
    SQLite.SQLite3.Config(SQLite.SQLite3.ConfigOption.Serialized);
    SQLite.SQLite3.Initialize();

и это остановило любые проблемы (получение SIGSEVC ошибок).

Теперь я попытался переместить код моей библиотеки в PCL, поэтому косил с помощью oysteinkrog/SQLite.Net-PCL, но возможности установить режим конфигурации, похоже, больше не существует. Просматривая код, я обнаружил, что в SQLite.Net.Interop.ISQLiteApi есть следующая строка.

//        Result Config(ConfigOption option);

поэтому возможность установки конфига не реализована.

Теперь я снова получаю ошибку SIGSEVC на Monodroid, когда мой фоновый поток возвращается с обновлениями из веб-службы.

Соединение с базой данных используется совместно с использованием статического соединения, а весь доступ к базе данных — через блокировку (объект).

Вопросы:

  1. Можно ли как-то настроить Config на Serialized?
  2. или есть ли лучший способ определить мое соединение и доступ к базе данных, чтобы избежать этой проблемы.

person Sudmanche    schedule 02.06.2014    source источник


Ответы (1)


Казалось, что лучший способ исправить это — изменить исходный код SQLite.Net-PCL. Я сделал это, реализуя недостающие функции.

это требовало импорта dll и создания конкретных реализаций для каждой платформы.

Полная информация находится в проекте GitHub здесь https://github.com/oysteinkrog/SQLite.Net-PCL/issues/35

person Sudmanche    schedule 02.06.2014