3
我对如何实际创建适当的等待功能存在两难困境。我不完全得到整个概念,可能是由于语言不通:)什么是创建等待功能的正确方法
一个
public async Task<int> InsertASync(string tableName, Dictionary<string, string> data)
{
int r = 0;
using (SQLiteConnection con = NewConnection())
{
await con.OpenAsync();
using (SQLiteCommand com = new SQLiteCommand(Query_Insert(tableName, data), con))
{
r = await com.ExecuteNonQueryAsync();
}
con.Close();
}
return r;
}
或
乙
public Task<int> InsertASync(string tableName, Dictionary<string, string> data)
{
return Task<int>.Run(async() =>
{
int r = 0;
using (SQLiteConnection con = NewConnection())
{
await con.OpenAsync();
using (SQLiteCommand com = new SQLiteCommand(Query_Insert(tableName, data), con))
{
r = await com.ExecuteNonQueryAsync();
}
con.Close();
}
return r;
});
}
原因,我想知道这是因为我通过廉价的方式创建等待方法。
例
public void DoHeavyWork() //this will block UI
{
//Do work
}
public Task DoHeavyWorkASync() //this won't
{
return Task.Run(() =>
{
DoHeavyWork();
});
}
备选方案A的一些好深入的信息 - 你的方法定义的,它返回的任务,但在返回语句它只返回int,我想这是一个错误? –
Prokurors
2015-02-08 10:49:13