c# - 围绕异步等待

标签 c# .net asynchronous

请原谅这个明显的新手问题。关于 async 和 await 有一些我没有掌握的东西。

为了让一个方法成为异步的,它必须等待从也是异步的任务/方法返回。正确的?但在某些时候,不会有一个非异步或不等待任何任务的任务吗?

我一直在阅读像这两个这样的教程:

https://msdn.microsoft.com/en-us/magazine/hh456401.aspx

https://msdn.microsoft.com/en-us/library/mt674882.aspx

我一直在看这里的许多其他主题。但是还是有一点不明白。我会试着举一个简单的例子。假设我想将一个值写入数据库中的列:

 public async Task<SimpleObject> ExecuteAsync(int rowID, string value)
 {
    return await WriteToDB(int rowID, string value);
 }

到目前为止一切顺利。但是,这就是我迷路的地方:

 public async Task<SimpleObject> WriteToDB(int rowID, string value)
 {
      var dataRow = context. /// use linq to get a row with rowID
      dataRow.SomeColumn = value
      context.SaveChanges();
      var simpleObject = new SimpleObject();
      simpleObject.success = true;
      return simpleObject;
 }

 public class SimpleObject
 {
    public bool success {get;set;}
 }

VS 非常礼貌地通知我,我的方法 WriteToDB() 缺少 await 并且将同​​步运行。我仍然可以编译,并且不会出现运行时错误。但是,我不知道如何在 WriteToDB() 中使用 await

最佳答案

您需要使用 .SaveChangesAsync 方法。

 public async Task<SimpleObject> WriteToDB(int rowID, string value)
 {
      var dataRow = context. 
      dataRow.SomeColumn = value
      await context.SaveChangesAsync(); //change this line
      var simpleObject = new SimpleObject();
      simpleObject.success = true;
      return simpleObject;
 }

关于c# - 围绕异步等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43688085/

相关文章:

c# - 如何在 C# 中的 DataTable 中添加 "String[] or List<String>"作为一个单元格条目?

c# - 如何在 WPF 中为我的弹出窗口应用图标?

c# - 使用 .NET 定期在目录中查找更改的文件

c# - 如何从 pfx/cer 创建 snk?

c# - 如何在不保留搁置集的情况下从 TFS 取消搁置?

c# - 如何知道线程池中的线程挂起/卡住

c# - 如何开发DirectX应用程序?

javascript - promise 回调可以延迟吗?

asynchronous - 如何使用 Play 2.1.1 异步请求和 future

javascript - 动态创建带分页的 HTML 表格