【发布时间】:2017-09-27 00:54:01
【问题描述】:
请原谅明目张胆的新手问题。有一些关于 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。
【问题讨论】:
-
EF中没有
SaveChangesAsync()方法吗? -
可能相关文章:“There is no thread”
-
不仅有SaveChangesAsync,还有很多用于数据检索的异步方法(如FirstAsync或ToListAsync),所以第一行就已经有了await。
标签: c# .net asynchronous