我在ASP.NET/C#中有一个简单的网页。目前为了完全呈现数据,我需要调用在后台线程上运行的代码块,并可能需要几分钟才能完成。我已经明白了这一点(使用页面声明中的异步属性)来执行,并在完成后用html返回。我希望它能让我立即返回某种类型的“加载页面”,然后在后台工作完成后更新该页面。现在,当后台工作正在处理时,我在页面上什么都没有得到。任何想法,最好的方式或聪明的方式来做到这一点将不胜感激!'正在加载'异步调用网页
感谢,
西格
我在ASP.NET/C#中有一个简单的网页。目前为了完全呈现数据,我需要调用在后台线程上运行的代码块,并可能需要几分钟才能完成。我已经明白了这一点(使用页面声明中的异步属性)来执行,并在完成后用html返回。我希望它能让我立即返回某种类型的“加载页面”,然后在后台工作完成后更新该页面。现在,当后台工作正在处理时,我在页面上什么都没有得到。任何想法,最好的方式或聪明的方式来做到这一点将不胜感激!'正在加载'异步调用网页
感谢,
西格
有来实现你的描述使用Ajax什么,但很多方面,如果你想保持它非常简单,你可以简单地Flush()
之前,你的一些加载屏幕响应启动长时间运行的任务:
<div>
Loading..
<% Response.Flush(); %>
<% System.Threading.Thread.Sleep(5000); %>
Done!
</div>
你想要什么叫做HTTP Server Push或HTTP流媒体或长轮询。取决于如何完成。
有很多在网络上的例子,文章还解释了深入的问题。我首先研究这些。
您也可以看看这个HTTP流...
Cross-browser implementation of "HTTP Streaming" (push) AJAX pattern
有到有一个伟大的介绍文章的链接SO问题。
或者这一个与长轮询
How do I implement basic "Long Polling"?
或
https://stackoverflow.com/questions/tagged/long-polling
希望这有助于的一个例子。
我同意上述发布的评论。
然而,我会和有但使用ashx(处理程序)作为一个单独的页面实现“处理器”,因为这些真的很简单,从JavaScript调用和轮询,你只需编写进程请求事件馈送东西进入响应流。
我很想在我的网站上向您展示一个示例,但我的主机决定在我们的网站上运行一周,而他们在服务器上更新.net(您可以想象我对此并不特别满意)。
虽然本质上我来说,我有一个依赖于数据从一个页面: 英国广播公司 谷歌 亚马逊 的YouTube 一些其他的随机位置。
该页面返回给用户,并在页面上各个控件然后进行Ajax调用回服务器及其零部件。
反馈数据将被加载到的标签的默认内容是一个简单的动画gif图像,看起来非常像flash或silverlight加载循环。
数据返回后,gif被服务器馈送的内容替换。
这意味着客户端看到“正在加载”并且服务器正在忙于处理客户端需要的所有内容(看起来似乎是同步的)。
这是一个干净的用户体验,代码非常简单。
当我看着如何使用silverlight进行文件上传时,我绊倒了这个想法。
基本概念:
希望这有助于:)
尝试,一个和喜欢这个主意,因为它似乎很好的和简单的。然而,虽然它最初似乎起作用,但最终失败了,因为它无法保存会话。 – Sieg 2010-05-14 15:59:06