异步/等待简单的例子

时间:2015-03-30 09:21:09

标签: c# asynchronous async-await

我试图通过创建一个简单的例子来理解async / await的基础知识。 我使用Sqlite与Async连接,我有一个这样的类:

public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

现在假设我要将User保存到我的UserTable中,当保存完成后,我希望检索它。

public async ? SaveToDb()
        {
            _conn.CreateTableAsync<User>();
            await _conn.InsertAsync(new User(){Id=1, Name = "Bill"});

            //Code that waits for the save to complete and then retrieves the user
        }

我怀疑我需要某个任务,但我不完全确定如何做到这一点。谢谢

2 个答案:

答案 0 :(得分:7)

你已经在那里了。

返回void时:

public async Task SomethingAsync()
{
    await DoSomethingAsync();
}

返回结果时:

public async Task<string> SomethingAsync()
{
    return await DoSomethingAsync();
}

在异步方法中返回值时要注意的是返回内部类型(即本例string)而不是Task<string>实例。

答案 1 :(得分:1)

如果您的代码没有返回任何值,则签名应为此,返回Task

public async Task SaveToDb()

否则,您需要在此示例中的Task<T>string中将返回类型指定为类型参数:

public async Task<string> SaveToDb()