我有一个执行长时间运行过程的按钮,所以我想重定向到成功页面,直到过程完成,这是一个代码示例:
Response.Redirect("Page_URL", false);
Thread.Sleep(100000);
问题:页面未立即重定向,等待100秒然后重定向。
请问任何想法?
答案 0 :(得分:2)
第二个参数将立即结束响应,如果将其设置为true,则重定向。 True将导致在重定向之外不再执行代码,但由于您将其设置为false,因此其余代码将执行,然后重定向将发生,这就是您遇到延迟的原因。有关详细信息,请参阅MSDN:
在页面处理程序中使用此方法终止请求时 一页并开始另一页的新请求,将endResponse设置为 false然后调用CompleteRequest方法。如果指定true 对于endResponse参数,此方法调用End方法 原始请求,抛出ThreadAbortException异常 当它完成。此异常对Web有不利影响 应用程序性能,这就是为什么传递false的原因 建议使用endResponse参数。有关更多信息,请参阅 结束方法。
如果你希望重定向在你的漫长过程之后发生,你应该设置一些东西,以便在完成过程时触发重定向,例如通过ajax调用执行长过程并轮询它以获得进度然后重定向。
答案 1 :(得分:2)
让长进程在不同的线程上工作,然后它会立即重定向。
或者您可以使用ajax并向用户显示进度,然后重定向到成功页面(如果长时间过程失败并且您不希望您的用户看到失败的成功消息,将会有所帮助)
答案 2 :(得分:0)
这段代码就行了。
Response.Redirect(“Page_URL”, false);
var t = Task.Factory.StartNew(() =>
{
// your code here
});