C# ASP.NET任务等待Ajax
所以,我刚从大学毕业,我只是在学习旧的MVC5 我刚才看了这个,第三点。关于注册用户,我注意到它使用了C# ASP.NET任务等待Ajax,c#,asp.net,ajax,asynchronous,C#,Asp.net,Ajax,Asynchronous,所以,我刚从大学毕业,我只是在学习旧的MVC5 我刚才看了这个,第三点。关于注册用户,我注意到它使用了async: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new Applic
async
:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务寄存器(RegisterViewModel模型)
{
if(ModelState.IsValid)
{
var user=new ApplicationUser(){UserName=model.UserName};
var result=await UserManager.CreateAsync(用户、模型、密码);
if(result.successed)
{
等待信号同步(用户,ispersist:false);
返回重定向到操作(“索引”、“主页”);
}
其他的
{
加法器(结果);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
我只想澄清一点,我熟悉async
关键字及其与Task
和wait
的关联,您是否有将其用于Ajax
操作
它可以与Ajax
操作一起使用吗
如果是这样,我想Ajax
将是实现它的最佳方式
您必须将其用于Ajax操作吗
不,绝对不是。您可以在AJAX操作中使用同步代码(大多数情况下您可能会这样做):即使服务器线程在后台被阻塞,客户端(浏览器)请求仍然是异步的
它可以用于Ajax操作吗
是的,它可以。在适当的时候。通常允许长时间运行的I/O操作在不阻塞工作线程的情况下完成
在您的示例中,Register
方法将等待UserManager.CreateAsync
完成,但同时执行此方法的线程可以自由处理其他请求
这里有一些好消息。Web代码几乎总是异步的。这是因为IIS在一个池中托管了大量线程,所有线程都在侦听连接。因此,您的代码可以同时在多个线程上运行
async
和await
是一种将工作委托给不同线程池并在工作完成时接收响应的方法。它与本机异步ASP.NET管道无关,但可以在管道中使用,以获得额外的性能增益 我也很喜欢这个答案,ashame我不能同时接受这两个答案,但谢谢你的贡献!:)@No1_Melman没问题-我添加了一点额外的细节,希望能够澄清async
在本例中的用法。