我不是真的想要Async控制器,我现在正在阅读我能做的事情,但我想我会试着节省一些时间,因为我的时间相当紧迫。
我正在开发一个允许用户上传视频片段的项目,但我想将它们转换为不同的格式,以便在不同的设备上播放。上传发生之后,我一直在考虑这样做但是不好的是用户将等待它完成才能离开。
所以对于我的问题,使用异步控制器和动作是否允许转换过程发生而用户不得不在上传页面等待?
道歉,如果这是一个愚蠢的问题,就像我说我刚刚开始阅读有关异步控制器
由于
答案 0 :(得分:1)
没有。当CPU使用率较低时(例如重I / O),AsyncController释放执行控制器的线程以执行其他操作。在action方法返回之前,结果不会返回给客户端。
如果您想快速返回页面,最好在单独的线程中开始转换。我们在发送电子邮件时使用此方法,以便用户在返回视图之前不必等待发送电子邮件。
以下是我们发送电子邮件的方式。
// this can go in an action method, or you can DI this code as a service
var sender = new SmtpEmailSender(message);
var thread = new Thread(sender.Send);
thread.Start();
...
return View(model);
// this is the code run by the new thread
// (EmailMessage is a custom type in our app)
public class SmtpEmailSender
{
public SmtpEmailSender(EmailMessage emailMessage)
{
// arg to instance field
}
public void Send()
{
// construct System.Net mail and send over SMTP
}
}