积极答复者
Damon.Tian例子中的疑问

问题
-
见这个帖子的回答,有个Damon.Tian提供的样例。
其中,为什么
private async System.Threading.Tasks.Task Prite()
{
var query = conn.Table<Person>();
var result = await query.ToListAsync();
foreach (var item in result)
{
Debug.WriteLine(string.Format("{0}: {1} {2}", item.Id, item.Name, item.Surname));
}
}需要声明成task,而其他async操作都是void
在这段代码中,如何把Person person的声明语句剥离出lambda表达式,而作为一个参数传递进去
private async void Button_Click_2(object sender, RoutedEventArgs e)
{
await conn.RunInTransactionAsync((connection) =>
{
Person person = new Person
{
Id = 1,
Name = "Damon",
Surname = "Damon.Tian"
};connection.Insert(person);
});
await Prite();
}
答案
-
你好,
返回值为Task/Task<T>的方法, 才可以在调用的时候用关键字await达到同步调用的效果.
返回值为viod调用的时候,不能采用同步调用.
我的Demo中, Button_Click_2是需要作为委托参数, 必须委托的声明, 所以返回值只能是viod.
Thanks! Damon.Tian
- 已建议为答案 Damon.Tian 2012年9月21日 4:55
- 已标记为答案 Aaron XueModerator 2012年10月8日 9:28
全部回复
-
你好,
返回值为Task/Task<T>的方法, 才可以在调用的时候用关键字await达到同步调用的效果.
返回值为viod调用的时候,不能采用同步调用.
我的Demo中, Button_Click_2是需要作为委托参数, 必须委托的声明, 所以返回值只能是viod.
Thanks! Damon.Tian
- 已建议为答案 Damon.Tian 2012年9月21日 4:55
- 已标记为答案 Aaron XueModerator 2012年10月8日 9:28