SQLite.NET PCL多线程访问MONO

时间:2014-06-02 08:05:09

标签: c# multithreading xamarin.ios xamarin.android sqlite.net

我一直在使用SQLite.Net MonodroidMonotouch,为避免跨线程访问问题,我使用此代码设置Serialized模式。

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

这确实可以解决任何问题(收到SIGSEVC错误)。

我现在尝试将我的库代码移到PCL,因此使用oysteinkrog/SQLite.Net-PCL进行修剪 但是设置Config模式的选项似乎不再存在。通过代码搜索,我在SQLite.Net.Interop.ISQLiteApi中找到了以下行。

//        Result Config(ConfigOption option);

所以没有实现设置配置的能力。

现在,当我的后台线程返回来自Web服务的更新时,我在Monodroid上再次出现SIGSEVC错误。

使用静态连接共享数据库连接,通过lock(object)访问所有数据库。

问题:

  1. 是否可以将Config设置为序列化?
  2. 或者,是否有更好的方法来定义我的连接和数据库访问以避免此问题。

1 个答案:

答案 0 :(得分:2)

修复它的最佳方法似乎是修改SQLite.Net-PCL的源代码。我这样做是为了实现缺失的功能。

这需要为每个平台创建dll导入和具体实现。

详情请参阅GitHub项目https://github.com/oysteinkrog/SQLite.Net-PCL/issues/35