Sqlite同步和异步在一起

Sqlite sync and async together

同时使用 sqlite sync 和 async 是好的做法吗?

示例我需要在创建方法上使用 sqlite 同步,但在其他线程中更新另一个 table 异步。

public class DatabaseHelper
    {
        private static SQLiteConnection sqlConnection;
        private static SQLiteAsyncConnection sqlConnectionAsync;
        public static SQLiteConnection db()
        {
            if(sqlConnection == null)
                sqlConnection = new SQLiteConnection(Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"));
                               
            return sqlConnection;
        }
        public static SQLiteAsyncConnection dbAsync()
        {
            if (sqlConnectionAsync == null)
                sqlConnectionAsync = new SQLiteAsyncConnection(Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "student.db3"));
           
            return sqlConnectionAsync;
        }
    }

OnCreate 方法

数据源= DatabaseHelper.db().Table(); await DatabaseHelper.dbAsync().DeleteAll();

这是安全的,是的。只要单独的连接用于并发访问,那么您可以使用同步或异步 API。

还有一个问题你没问:有用吗?我上次检查时,SQLite 数据库驱动程序是 synchronous-only,而“异步”API 实际上是 运行 同步的。他们会工作得很好;他们可能无法解除 UI 的阻塞,您可能需要使用 Task.Run 将工作丢到后台线程,即使对于异步 API 也是如此。