请原谅这个明显的新手问题。关于 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/