[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(LoginViewModel objmodel, string returnUrl)
{
LoginViewModel model = new LoginViewModel();
if (!ModelState.IsValid)
{
return View(model);
}
string mode = "User_Login";
//string userLoginName = "test";
//string userPassword = "test";
string userLoginName = model.UserName;
string userPassword = model.Password;
ObjectParameter returnParams = new ObjectParameter("Params", typeof(string));
DBECRF_01Entities3 ent = new DBECRF_01Entities3();
string outparam = (ent.Sp_UserLogin(mode, userLoginName, userPassword, returnParams)).ToString();
switch (outparam)
{
case "Success":
return View("Contact");
case "Failure":
return View("Lockout");
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
// return View("Index", model);
}
此异步方法缺少“await”运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。
像这样。
如果您必须创建一个异步方法,那么您确实需要在其中包含异步内容(一个需要未知时间才能执行的调用),比如数据库调用,并且在前面使用await(您的错误消息建议):
public async Task<Stuff> GetStuff()
{
return await db.GetAllStuff();
}
如果在方法中不能有任何异步调用,那么最好的实践是“不要撒谎”,让它保持同步:在您的情况下,替换
async Task<ActionResult>
与
ActionResult
await Task.Delay(100);
同步调用异步方法最安全的方法是什么?
我有一些异步服务,我想在 Xamarin 应用程序的不同位置调用这些服务。我使用 Prism 从本机 UWP 应用移植我的代码。 前段时间,我能够通过声明制作方法来做到这一点,例如 或者 在那里等候。然而,它停止了工作。 尝试使用GetAwaiter()。GetResault()会阻止执行并导致死锁。 这有点奇怪,考虑到INavigationService.NavigateAsync本身是异步方法
以下是我尝试使用“可完成未来”类实现的用例 我有一个id列表,我想为每个id调用api 我想从api调用中获得响应,并将其保存在列表或映射中,以便进一步处理 我也不想等到得到所有api调用的响应。我想设定一个时间限制,并在那之前获取所有可用的数据 我尝试了以下代码,但它不能正常工作 您能指导我这个用例吗?我需要 1.超时设置为 2。异步数据处理 3.未知的项目数。 我正在使用Java 8。 谢谢。
为了实现上面的逻辑,我需要客户机发送他的监听器信息和请求(基本上是URI)。这是在处理完请求后,将请求状态更新到客户端。 使用JAX-RS处理长时间运行的操作