我一直在使用SQLite.Net
Monodroid
和Monotouch
,为避免跨线程访问问题,我使用此代码设置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)访问所有数据库。
问题:
答案 0 :(得分:2)
修复它的最佳方法似乎是修改SQLite.Net-PCL的源代码。我这样做是为了实现缺失的功能。
这需要为每个平台创建dll导入和具体实现。
详情请参阅GitHub项目https://github.com/oysteinkrog/SQLite.Net-PCL/issues/35