Xamarin SQLite:什么是不同的SQLiteAsyncConnection和SQLiteConnection

时间:2017-09-13 22:25:18

标签: sqlite asynchronous xamarin portable-class-library

我可以调用两种类型的构造函数来初始化Sqlite连接。我知道SQLiteAsyncConnection是在执行sql语句时创建异步方法,而SQLiteConnection是用于普通方法。

如果我有如下方法:

public object InsertVeggie(string name) 
{
   lock (locker) {
      var sql = "Some query ?";
      var result = database.Query<Model>(sql, name);
      return result;
   }        
}

如果我有异步方法:

public async Task<Model> GetModel (string name) 
{
    var data = InsertVeggie(name);
    await ProcessVeggie(data);
    return data;
}

通话方式:

Task.Run (async () => 
{ 
   var result1 = await GetModel("124");
});

Task.Run (async () => 
{ 
   var result2 = await GetModel("335");
});

如果我使用SQLiteConnection而不是SQLiteAsyncConnection,则会出现问题或者必须将InsertVeggie更改为Async方法。

1 个答案:

答案 0 :(得分:0)

如您所说,SQLiteAsyncConnection公开了异步方法,因此您通常会使用自己的async方法来使用它们。

您的InsertVeggie方法将更改为:

public async Task<object> InsertVeggie(string name) 
{
  var sql = "Some query ?";
  var result = await database.QueryAsync<Model>(sql, name);
  return result;     
}

(请注意,您不再需要锁定),您可以将其用作:

var data = await InsertVeggie(name);