我得到了一个页面,我做一些文件操作,当文件完成后,我需要上传到亚马逊S3。有时文件可能很大,因此提交的用户需要等待太久。我怎样才能让像如何调用一个函数,但不等待完成 - ASP.NET
- 文件操作
- 当完成后,我送文件名参数一些功能
- 我并不需要等待该功能,我想使用Response.Redirect上传完成之前。
我得到了一个页面,我做一些文件操作,当文件完成后,我需要上传到亚马逊S3。有时文件可能很大,因此提交的用户需要等待太久。我怎样才能让像如何调用一个函数,但不等待完成 - ASP.NET
最简单的方法:
ThreadPool.QueueUserWorkItem(YourUploadMethod);
有低于这个争论的一些评论,所以我写了这个:
protected void Page_Load(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(YourUploadMethod);
Response.Redirect("http://google.com");
}
public void YourUploadMethod(object state)
{
Thread.Sleep(7000);
}// breakpoint: I was redirected to google and then debugger stopped me here
我不认为这种方法适用于asp.net,因为一旦主线程结束,后台线程也会死掉(无论它们是否完成)。 – hofnarwillie 2012-04-07 18:20:37
我认为Response.End,Response.Redirect或Server.Transfer只会中止主线程。看到这个问题:http://stackoverflow.com/questions/1087777/is-response-end-considered-harmful – 2012-04-07 18:47:12
你是对的。我立场纠正。 :) – hofnarwillie 2012-04-07 19:06:53
您可以使用Ajax非同步上传控制这一点,但不能高达重定向上传完成。 – 2012-04-07 18:10:58