我有以下代码:
public async Task<JsonResult<LoginStatus>> Login(LoginDTO loginDTO)
{
var result = new JsonResult<LoginStatus>();
try
{
var signIn = SignInManager.PasswordSignInAsync(loginDTO.Username, loginDTO.Password, loginDTO.IsPersistent, false); // or any async method.
result.Success = true;
await signIn;
}
catch (Exception ex)
{
result.Success = false;
result.Error = ex;
}
return result;
}
我可以这样改:
public async Task<JsonResult<LoginStatus>> Login(LoginDTO loginDTO)
{
var result = new JsonResult<LoginStatus>();
try
{
await SignInManager.PasswordSignInAsync(loginDTO.Username, loginDTO.Password, loginDTO.IsPersistent, false); // or any async method.
result.Success = true;
}
catch (Exception ex)
{
result.Success = false;
result.Error = ex;
}
return result;
}
它们之间有什么区别(性能或其他)吗?哪个是最佳实践?
最佳答案
没有明显区别
首先,您从
PasswordSignInAsync
返回一个Task
分配result.Success = true
然后等待任务第二,您正在等待
PasswordSignInAsync
Task
,如果它没有抛出您分配result.Success = true
如果有的话,第二个版本更干净,并且您可以通过可能不执行冗余分配来节省一点点 IL
。总而言之,我不希望有任何性能差异,归结为时尚感
关于c# - 放置异步/等待的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51513587/