什么叫做异步回调?
发布网友
发布时间:2022-04-27 00:11
我来回答
共5个回答
热心网友
时间:2022-06-21 03:28
首先举个同步调用的例子:
比如你的程序调用了一个方法,这个方法要执行很长很长时间,而且这个时间都不确定,传统的办法就是“同步调用”,如下:
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等,有些异步是同一个线程完成的,有些异步是不同的线程,所以回调函数里要更新控件都会提示跨线程访问控件的错误提示,网上搜索一下很好解决,
热心网友
时间:2022-06-21 03:29
异步回调就是发起请求后,不等待响应就去先干别的事
相对于同步就是必须等到响应该请求后才能做别的事
热心网友
时间:2022-06-21 03:29
AsynCallback
就是当出现期待的回调事件时,才有事件触发方调用该callBack方法。
通常调用该方法的线程和设置回调的线程不是一个线程。
热心网友
时间:2022-06-21 03:30
简单的说就是
if (!IsPostBack)
{
}
热心网友
时间:2022-06-21 03:31
ajax 不用刷新网页的情况下从服务器传递数据。