关于.net中后台处理的建议

时间:2010-09-30 14:57:43

标签: c# asp.net backgroundworker background-process

我有一个从外部来源读取数据的网页。检索数据可能需要一段时间。

我想知道是否有人可以让我了解在后台发生这种情况的最佳方法。我希望页面出现并在最终显示数据的面板中显示“处理”(或类似的东西)。

我想到了BackgroundWorker组件,或者可能是AsyncPostBackTrigger ......不确定这些是否能解决这个问题让我满意。

那么......有没有人对这个问题有好的解决方法?

感谢您的建议!!

4 个答案:

答案 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发出异步请求并显示加载图像,直到查询完成。