就像标题所说的那样。
我发现我遇到的许多问题都与使用Sqlite和Monotouch所需的Sqlite包装器中的线程安全性缺乏有关 - 所以 - 问题是 - 有替代方案吗?必须有的东西 !!?
瓦特://
答案 0 :(得分:4)
Sqlite本身不是线程安全的,因此每当您要访问数据库时都需要手动锁定。您可以通过TweetStation了解我是如何做到这一点的:
http://github.com/migueldeicaza/TweetStation/
这允许我在后台更新数据库。
有几个绑定到Sqlite:sqlite-net这是一个很小的Sqlite绑定或Mono.Data.Sqlite。
对于CoreData,它会遇到同样的问题,你没有免费获得线程安全,你也需要遵守他们的规则。
答案 1 :(得分:0)
在iOS 4中,您可以调用sqlite3_config(SQLITE_CONFIG_SERIALIZED),或在C#中使用Sqlite3包装器:
var result = SQLite3.Config(SQLite3.ConfigOption.Serialized);
if (result != SQLite3.Result.OK)
{
throw new InvalidProgramException("sqlite3 refused Serialized option");
}