Sqlite同步和异步在一起

0mkxixxg  于 2023-04-21  发布在  SQLite
关注(0)|答案(1)|浏览(288)

同时使用sqlite sync和async是不是一个好的做法?
例如,我需要在创建方法上使用sqlite同步,但在其他线程中更新另一个表异步。

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方法

datasource= DatabaseHelper.db().Table<Items>();
await DatabaseHelper.dbAsync().DeleteAll<Customers>();
5rgfhyps

5rgfhyps1#

这是安全的,是的。只要使用单独的连接进行并发访问,那么您就可以使用同步或异步API。
还有一个问题你没问它有用吗?上次我检查的时候,SQLite数据库驱动程序只支持同步,而“异步”API实际上是同步运行的。它们可能只是不能解除UI的阻塞,您可能需要使用Task.Run将工作扔到后台线程上,即使是异步API。

相关问题