同时使用sqlite同步和异步是很好的实践吗?
例如,我需要在create方法上使用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();等待DatabaseHelper.dbAsync().DeleteAll();
发布于 2022-04-13 13:34:14
这里很安全,是的。只要单独的连接用于并发访问,那么您就可以使用同步或异步API。
还有一个你没有问的问题:它有用吗?上次我检查时,SQLite数据库驱动程序仅是同步的,而“异步”API实际上是同步运行的。它们将正常工作;它们可能不会解除UI的阻塞,您可能需要使用Task.Run
将工作抛到后台线程上,甚至对于异步API也是如此。
https://stackoverflow.com/questions/71848624
复制