none
Damon.Tian例子中的疑问 RRS feed

  • 问题

  • http://social.msdn.microsoft.com/Forums/zh-CN/metroappzhcn/thread/b3c62a2c-f1ce-4003-a06d-57cb5978b1f0

    见这个帖子的回答,有个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();
            }

    2012年9月14日 7:33

答案

  • 你好,

    返回值为Task/Task<T>的方法, 才可以在调用的时候用关键字await达到同步调用的效果.

    返回值为viod调用的时候,不能采用同步调用.

    我的Demo中, Button_Click_2是需要作为委托参数, 必须委托的声明, 所以返回值只能是viod.


    Thanks! Damon.Tian

    2012年9月14日 12:15

全部回复

  • 你好,

    返回值为Task/Task<T>的方法, 才可以在调用的时候用关键字await达到同步调用的效果.

    返回值为viod调用的时候,不能采用同步调用.

    我的Demo中, Button_Click_2是需要作为委托参数, 必须委托的声明, 所以返回值只能是viod.


    Thanks! Damon.Tian

    2012年9月14日 12:15
  • 谢谢您的回答,

    还想请教一下是否有类似

    cmd的代码方式,来执行sql语句。

    比如:cmd.content="select * from Person"

    cmd.run();类似如此。

    2012年9月15日 0:58