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 也是如此。
同时使用 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 也是如此。