我们正在使用以下内容:
- Xamarin 3(Xamarin 形式)
- 单触
- sqlite.net
- iOS模拟器/硬件
该应用程序在后台线程上与服务器同步数据。整个应用程序只共享一个 SQLite 连接对象。前台查询在后台同步运行的同时执行。所有这些都在应用程序的 Windows 8.1 版本(即,在 MSFT Surface 和类似版本上)上运行良好。但是,一旦我们切换到 Xamarin/mono,我们就开始不断崩溃,如下所示。
研究导致了这篇文章:http ://www.aaronheise.com/2012/12/monotouch-sqlite-sigsegv/
他使用的是 Mono.Data.SqliteClient,而不是我们现在使用的 sqlite.net。
他的解决方案包括显式处理 Command 对象以确保 GC 能够跟上等。当我尝试将我的 Command 对象(来自 sqlite.net)包装在 using(){} 子句中时,我发现它们不是一次性的。
我尝试插入 100 毫秒的延迟并停止崩溃,但这对我们来说不是一个可行的解决方案。
sqlite.net 这里有希望吗,还是我应该寻找一种不同的方式来使用 sqlite?
mono-rt: Stacktrace:
mono-rt: at <unknown> <0xffffffff>
mono-rt: at (wrapper managed-to-native) SQLite.SQLite3.Prepare2 (intptr,string,int,intptr&,intptr) <IL 0x0003c, 0xffffffff>
...
mono-rt:
Native stacktrace:
mono-rt:
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.