同时使用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>();
1条答案
按热度按时间5rgfhyps1#
这是安全的,是的。只要使用单独的连接进行并发访问,那么您就可以使用同步或异步API。
还有一个问题你没问它有用吗?上次我检查的时候,SQLite数据库驱动程序只支持同步,而“异步”API实际上是同步运行的。它们可能只是不能解除UI的阻塞,您可能需要使用
Task.Run
将工作扔到后台线程上,即使是异步API。