我有以下方法:
private async Task<Request> UpdateRequest(string id, RequestOutcome outcome)
{
var request = Db.Request.Where(r => r.Id.ToString().Equals(id)).First();
request.DateLastRead = DateTime.Now;
request.DateConcluded = request.DateLastRead;
request.Outcome = (int) outcome;
Db.Entry(request).State = EntityState.Modified;
if (await Db.SaveChangesAsync() <= 0) return null;
return outcome == RequestOutcome.Accept ? request : null;
}
Run Code Online (Sandbox Code Playgroud)
这由以下内容调用:
public ActionResult Accept(string id)
{
var request = UpdateRequest(id, RequestOutcome.Accept);
if (request.Result != null)
{
var c = request.DateConcluded;
}
}
Run Code Online (Sandbox Code Playgroud)
如何在方法之外检查更新是否成功?我该说request != null吗?当我这样做时,我不断得到一个警告,表达总是如此.
如何访问request.DateConcluded属性,因为它已被创建为任务.
您正在同步运行异步代码.
您必须await在方法之前使用异步运行方法 - 这将处理为您获取任务的结果.
如果同步运行代码,则必须获得任务的结果.
对于异步:
public async Task<ActionResult> Accept(string id)
{
var request = await UpdateRequest(id, RequestOutcome.Accept);
if (request!= null)
{
var c = request.DateConcluded;
}
}
Run Code Online (Sandbox Code Playgroud)
用于同步
public ActionResult Accept(string id)
{
var request = UpdateRequest(id, RequestOutcome.Accept).Result;
if (request != null)
{
var c = request.DateConcluded;
}
}
Run Code Online (Sandbox Code Playgroud)