2011-08-30 45 views
0

在点击事件中,我有一些代码需要大约4秒才能重定向用户。如何在后台执行代码?

有没有一种方法可以重定向用户,并且代码仍然会在服务器上执行?我

+0

旋转应用程序池上的新线程。 – N0Alias

回答

1

可以启动一个后台线程(或线程池上的任务)并在此期间重定向用户。但是,不能保证任务在重定向请求到达时已经完成。你需要它吗?它只是“整理”,还是需要在显示结果之前完成处理?

请注意,我不认为有什么可以阻止AppDomain在线程正在做它的事情时被垃圾收集......您可能想要将长时间运行的任务分离为单独的服务 - 请求发出请求到该服务,然后重定向用户。如果您具有请求的ID概念,则可以将其作为参数包含在重定向URL中,然后在重定向请求进入时检查服务是否已完成处理任务。

+0

所以,如果我创建一个web服务而不是一个线程,调用服务并重定向用户,服务仍然会被执行?我不需要在执行完成时向用户发送任何响应,我只需要在不让用户等待的情况下执行它。 – ShadowG

+0

@ShadowG:您希望使webservice本身很快返回,但添加一个作业到队列,或类似的东西。 –

0

如何使用XHR Request还是你想将用户重定向,后者可能会开始在另一个线程上运行的过程中,发送给客户端的响应..

0

这取决于昂贵的操作的结果是否影响用户在下一页上看到的内容。或者,您可以使用ajax在页面加载后执行处理。