【问题标题】:Advice on background processing in .net关于 .net 后台处理的建议
【发布时间】:2010-09-30 14:57:42
【问题描述】:

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

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

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

那么...有人对解决问题的好方法有任何想法吗?

谢谢你的建议!!

【问题讨论】:

  • 您使用的是哪个版本的 ASP.NET 和 C#?这将对“最佳”方式产生影响。

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


【解决方案1】:

我认为您正在寻找的是Ajax您希望以一种允许用户继续查看其他内容直到加载的方式从客户端发出请求。

.NET 有许多不同的技术来支持 AJAX 请求 - 从 UpdatePanel 控件到 Async Operations。您使用哪种技术取决于您正在尝试执行的操作的详细信息。

您也可以只使用 jQuery 之类的库向 Web 应用程序中的单独页面或服务发出异步内容请求。

【讨论】:

    【解决方案2】:

    我会使用 AJAX,将页面与处理消息一起发送给用户,然后使用 JavaScript(通过您的站点作为代理)从 XmlHttpRequest 请求外部源。

    【讨论】:

      【解决方案3】:

      嗯,一种解决方案是在更新面板内的页面上粘贴asp:Timer*。让OnTick 事件检索处理的当前状态(进度百分比、是否已完成、正在做什么等)。处理部分可以通过多种方式通知页面其进度;只是给它一个进度属性并在它运行时更新它是一种方法。请注意,OnTick 事件不会进行处理;只是为了弄清楚处理的状态。

      *如果你把它放在更新面板之外,它会每Interval打勾,而不是每Timer.Interval + TimeToReloadUpdatePanel打勾,如果TimeToReloadUpdatePanel >= Timer.Interval会是个大问题。

      【讨论】:

        【解决方案4】:

        我的想法是网络查询应该很快,所以我会寻找提高查询性能的方法。如果每个查询的数据都相同,我会尝试缓存它。如果这不可行,我会使用 jQuery 发出异步请求并显示加载图像,直到查询完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多