You can tell sqlite how to deal with multi-threaded. The trick is to do this very early on in your application (because as soon as sqlite is initialized, it will be too late to change it).
For SQLite.cs, you can do this with this code.
In Mono.Data.Sqlite.dll you can call Mono.Data.Sqlite.SqliteConnection.SetConfig (Mono.Data.Sqlite.SQLiteConfig.*); to do the same.
In both cases, valid values (for enumerating the configuration) are documented here .
source share