版权声明
·
网站留言
·
联系我们
·
加入收藏
热门关键词:
焦点图
png图标
背景
按钮
首页
PNG图标
广告代码
网页模板
字体下载
JS代码
CSS样式
技术文档
网站常用
gif图片
JPG图片
JavaScript用户手册
flash动画
jsp编程
.net编程
网站配色
网站优化
Oracle教程
JS技术
数据库编程
网络维护
html基础
安全相关
测试相关
知识扩展
CSS技术
DIV+CSS实例
DIV+CSS教程
鼠标特效
网站常用
文字特效
时间日期
图片特效
表格图层
导航菜单
网页特效
详细内容
首页
>>
技术文档
>>
.net编程
>> 正文
[
关闭窗口
]
异步回调是什么
发布日期:2010-06-20
点击:2421
字体:[
大
中
小
]
异步回调就是发起请求后,不等待响应就先去处理自己的响应,它不是处理整个请求,只是处理一小部分,在Web页上就表现为页面没刷新,却局部更新了数据。
相对于同步就是必须等到响应该请求后才能做别的事,具体到Web页就是整个页面刷新了,
数据
才更新。
下面举两个列子:
首先举个同步调用的例子:
比如你的程序调用了一个方法,这个方法要执行很长很长时间,而且这个时间都不确定,传统的办法就是“同步调用”,如下:
private int Func()
{
// 这个方法要执行很长时间,并且返回一个int的值。
}
private void A()
{
int n = Func();
textBox1.Text = n.ToString();
// 这里得到的n就是Func执行出来的结果,并且显示在textBox1中。
}
采用上述方法,可以叫做同步调用,很明显它有一个缺点:
Func方法执行的时间过长,程序会阻塞,并且无法继续执行其他的代码,给用户的体验就是整个程序都会等待着,打开任务管理器会提示该程序没有响应,用户以为程序停止了,就会手动结束这个程序,
而异步调用就不一样,在调用完Func这个方法后,不必等待Func执行完,就可以执行其他的代码,直到Func执行完,才把结果返回,
如果Func提供了异步方法FuncAsync(),就可以这样调用:
private void A()
{
FuncAsync();
// 这里执行FuncAsync方法,并不会阻塞,程序会在后台执行完FuncAsync方法后,自动调用FuncCompleted方法,并且把结果传过去。
}
private void FuncCompleted(int n)
{
textBox1.Text = n.ToString();
// 参数n就是异步回调返回的结果,
}
异步回调需要编写代码才能支持,网络传输方面的类库一般都提供异步方法,如socket编程,web服务,ajax,wcf等,有些异步是同一个线程完成的,有些异步是不同的线程,所以回调函数里要更新控件都会提示跨线程访问控件的错误提示。
用户评论
昵称
内容
*
验证码
相关文章
关于我们
-
版权声明
-
联系我们
-
网站留言
-
网站地图
Copyright © 2010 zdbase.com All Rights Reserved.
苏ICP备15039389号
可人软件设计