我有一个从外部来源读取数据的网页。检索数据可能需要一段时间。
我想知道是否有人可以让我了解在后台发生这种情况的最佳方法。我希望页面出现并在最终显示数据的面板中显示“处理”(或类似的东西)。
我想到了BackgroundWorker组件,或者可能是AsyncPostBackTrigger ......不确定这些是否能解决这个问题让我满意。
那么......有没有人对这个问题有好的解决方法?
感谢您的建议!!
答案 0 :(得分:1)
我认为您正在寻找的是Ajax。您希望以允许用户继续查看其他内容的方式从客户端发出请求负荷。
.NET支持AJAX请求有许多不同的技术 - 从UpdatePanel
控件到Async Operations。您使用哪种技术取决于您正在尝试做的具体细节。
您也可以使用像jQuery这样的库,将内容的异步请求发送到Web应用程序中的单独页面或服务。
答案 1 :(得分:0)
我会使用AJAX,使用处理消息将页面发送给用户,然后使用JavaScript(通过您的站点作为代理)从XmlHttpRequest请求外部源。
答案 2 :(得分:0)
嗯,一个解决方案是在更新面板*内的页面上粘贴asp:Timer
。让OnTick
事件检索处理的当前状态(进度百分比,如果已完成,它正在做什么等)。处理部分可以通过各种方式通知页面进度;只是给它一个进度属性并在运行时更新它是一种方法。请注意,OnTick
事件不会进行处理;它只是弄清楚处理的状态。
*如果您将其放在更新面板之外,它会勾选每Interval
而不是每Timer.Interval + TimeToReloadUpdatePanel
,如果TimeToReloadUpdatePanel >= Timer.Interval
,这将是一个大问题。
答案 3 :(得分:0)
我的想法是网络查询应该很快,所以我会寻找提高查询性能的方法。如果每个查询的数据都相同,我会尝试缓存它。如果这不可行,我会使用jQuery发出异步请求并显示加载图像,直到查询完成。