在asp.net 2.0中,c#。
是否可以从页面启动一个线程,例如当单击一个asp:按钮并从另一个页面启动时,检查该线程是否已退出?
原因:我们有一个页面,当单击按钮时会启动一个长的服务器端脚本。但是,由于我们不想等待该页面上脚本的结束,我们考虑创建一个执行脚本的线程,然后获取线程ID并将用户重定向到“请稍候”页面,每次刷新检查5秒钟检查线程是否已退出。
有关如何实现这一目标的更好的想法?
谢谢!
答案 0 :(得分:0)
这可以做到,但我会使用Ajax来改善体验。
基本上,你会调用你的方法,它会返回线程的标识符。它不必是线程ID,但是您需要某种可以在页面/调用之间传递的唯一标识符。
在您从该电话/页面返回之前,您将执行您的主题。
然后,当您的客户端检查状态时,它会检查会话或其他一些共享状态,这会将结果键入您之前返回的ID。
如果找到与该键对应的值,则显示结果(并从共享状态中删除结果),否则,它会在指定的时间段内再次检查。
答案 1 :(得分:0)
ASP.NET已经内置了一种方法来执行此类操作 - 它是异步页面模型。有两种方法可以实现这一点,您可以找到有关它们的详细信息here并解释所有好处。