Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MonoTouch中的数据库磁盘映像格式不正确_Ios_Multithreading_Sqlite_Xamarin.ios - Fatal编程技术网

Ios MonoTouch中的数据库磁盘映像格式不正确

Ios MonoTouch中的数据库磁盘映像格式不正确,ios,multithreading,sqlite,xamarin.ios,Ios,Multithreading,Sqlite,Xamarin.ios,我正在使用Monotouch 5开发一个多线程消息传递应用程序。经过几天的操作后,一些客户收到错误消息数据库磁盘映像格式不正确。我正在使用从互联网上找到的Kueger系统访问SQLite数据库 似乎存在多线程访问数据库的问题(这种情况经常发生)。我在某个地方读过关于如何编译数据库的选项(单线程、多线程、序列化)。我有没有具体说明 我想继续从后台线程更新数据库,而不会损坏它。我做错了什么?您可以告诉sqlite如何处理多线程。诀窍是在应用程序的早期进行操作(因为一旦sqlite初始化,更改它就太晚

我正在使用Monotouch 5开发一个多线程消息传递应用程序。经过几天的操作后,一些客户收到错误消息
数据库磁盘映像格式不正确
。我正在使用从互联网上找到的Kueger系统访问SQLite数据库

似乎存在多线程访问数据库的问题(这种情况经常发生)。我在某个地方读过关于如何编译数据库的选项(单线程、多线程、序列化)。我有没有具体说明


我想继续从后台线程更新数据库,而不会损坏它。我做错了什么?

您可以告诉sqlite如何处理多线程。诀窍是在应用程序的早期进行操作(因为一旦sqlite初始化,更改它就太晚了)

对于SQLite.cs,您可以使用代码执行此操作

Mono.Data.Sqlite.dll
中,可以调用
Mono.Data.Sqlite.SqliteConnection.SetConfig(Mono.Data.Sqlite.SQLiteConfig.*)以执行相同的操作


在这两种情况下,有效值(用于配置枚举)都会被记录下来。

我使用的是SQLite.cs,因此我在FinishedLaunching中发出了以下语句作为第一行:Console.WriteLine(SQLite.SQLite3.config(SQLite.SQLite3.ConfigOption.MultiThread));但它返回21。这是什么意思?我在结果枚举中找不到它。我做得太早了吗?
#定义SQLITE\u/*库使用不当*/
我猜还不够早(不知道太早会有多大问题)。您是否在
FinishedLaunching
方法的开头添加了此项?是的,这是FinishedLaunching的第一行。在那之前我需要做点什么吗?现在太早了吗?(例如,需要先指定db路径)?恐怕不能太早。错误(21)何时发生?而且,
多线程
可能不是您想要的。例如,您不能在多个线程之间共享单个连接,每个线程都必须有自己的连接(您可能希望尝试
序列化
)。阅读更多细节。谢谢你的提示,我也尝试过使用序列化,这似乎更合适。但是,上面的Console.Writeline输出21。这是我的项目中执行的第一行代码,就在FinishedLaunching下面。会发生什么?