C# 异步/等待简单示例
我试图通过创建一个简单的示例来理解async/await的基础知识。 我使用Sqlite和异步连接,我有一个类似这样的类:C# 异步/等待简单示例,c#,asynchronous,async-await,C#,Asynchronous,Async Await,我试图通过创建一个简单的示例来理解async/await的基础知识。 我使用Sqlite和异步连接,我有一个类似这样的类: public class User { public int Id { get; set; } public string Name { get; set; } } 现在让我们假设我想将用户保存到我的UserTable,保存完成后,我希望检索它 public async ? SaveToDb() {
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
现在让我们假设我想将用户
保存到我的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
}
公共异步?SaveToDb()
{
_conn.CreateTableAsync();
等待_conn.InsertAsync(新用户(){Id=1,Name=“Bill”});
//等待保存完成然后检索用户的代码
}
我怀疑我在某处需要一项任务,但我不完全确定如何完成。谢谢你如果你的代码没有返回任何值,签名应该是这个,返回任务:
public async Task SaveToDb()
否则,您需要将返回类型指定为本示例中任务
,字符串
中的类型参数:
public async Task<string> SaveToDb()
public异步任务SaveToDb()
你已经基本上做到了
返回void
时:
public async Task SomethingAsync()
{
await DoSomethingAsync();
}
返回结果时:
public async Task<string> SomethingAsync()
{
return await DoSomethingAsync();
}
公共异步任务SomethingAsync()
{
return wait DoSomethingAsync();
}
在异步方法中返回值时需要注意的是,您返回的是内部类型(即在本例中为
string
),而不是任务
实例。您可以查看大量示例。我怀疑async/Wait for C#可能存在,只要它在许多地方没有示例。正如@Vinod所链接的,一个简单的搜索就可以找到这些示例和更多示例。在等待InsertAsync
之前,您还需要等待CreateTableAsync
。呃……您应该只做返回DoSomethingAsync()
并从sig中删除async
。@Aron如果在方法IIRC中等待,则不会。No.DoSomethingAsync()
已返回任务。因此,您不需要编译器打开任务
等待它,然后将结果包装到另一个任务
中。