登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
使用Response.Flush方法实时显示处理过程的状态信息 ...
使用Response.Flush方法实时显示处理过程的状态信息
[ 复制链接 ]
擘塞
2025-5-29 20:09:26
Web项目,在处理大数据量和复杂业务的情况下,用户在浏览器中点击一个按钮后,服务器需要处理几十秒甚至好几分钟,才能将处理结果反馈给用户,在这个漫长的等待过程中,用户面对毫无反应的浏览器会不知所措,即便提示用户正在处理,用户由于不知道服务器的处理状态,在长时间等待后,也会不耐烦或误以为操作失败,而去刷新或者关闭浏览器。
怎么应对这种状态,给用户一个更好的体验呢?最好是把处理过程中的状态信息即时反馈给用户,就像杀毒软件扫描文件的时候,把扫描结果即时显示出来。
HttpResponse
类 位于命名空间: System.Web 。
HttpResponse
类的方法和属性通过 HttpApplication、HttpContext、Page和UserControl类的Response属性公开。
HttpResponse
类的方法
Write
,将信息写入 HTTP 响应输出流。
HttpResponse
类的方法
Flush
,用来向客户端强制发送当前所有缓冲的输出数据,在请求处理期间,允许多次调用该方法。改方法仅仅在回发的情况(不包括异步回发情况)下才被支持。
我们可以利用
Response.Flush
方法来实现上述设想。
下面用一个示例来演示如何实时提示处理过程的状态。出于演示的目的,将不考虑具体的业务。
在网站项目里,新建一个Web窗体Default.aspx。
窗体上放置一个Button控件,给Button控件添加“Click”处理事件。我们将单击这个Button,来触发传说中的大数据量的超复杂的业务运算。
再往窗体上添加一个元素:
注意的src属性的值是“Output.aspx”。再追加一个新的Web窗体,名为“Output.aspx”,通过请求它在里来显示处理结果。
删除Output.aspx页面上的所有自动生成的html代码。在Page_Load事件里添加处理过程,处理那个传说中的大数据量的超复杂的业务运算。并且在这个处理过程中,实时地用Response.Write方法输出当前处理的状态信息,并且用Response.Flush强制回发给客户端,使用户得到及时的反馈。
代码很简单,很容易理解,注意两点:
1、在Default.aspx的Button的“Click”事件处理过程中,定义一个Session,存储一个标识和其他画面输入的数据,用于传递到Output.aspx页面,在Output.aspx页面上判断,只有该Session存在,并且标识正确的情况下,才使用Session保存的其他信息,来做那个传说中的大数据量的超复杂的业务运算;
2:在每次输出信息的时候,同时输出一行脚本,控制着的的垂直滚动条滚动到最底下,让用户不用拖动滚动条就可以看到最新的输出信息。
全部的代码如下:
Default.aspx
Code
Demo - HttpResponse.Flush 方法
实行次数
Output.aspx
Code
演示结果截图
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
擘塞
2025-5-29 20:09:26
关注
0
粉丝关注
17
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多