委托不但能使事件定阅方法,还有另外一个功能,异步调用方法。
下面看个例子:
 1.net知识和学习方法系列(九)委托异步调用方法aclass Program
 2
 在运行的时候会发现,在三秒后屏幕上打印4,然后再停留三秒后打印16,这就表明,dl.Invoke(2)一但被调用,就会阻塞后面的调用,直到dl.Invoke(2)的返回值返回,然后dl.Invoke(4)才被调用。
有时候我们的业务要求最好不去等待,怎么解决呢?
还好,委托提供了异步调用方法的功能,改告一下上面的代码如下:
 1.net知识和学习方法系列(九)委托异步调用方法aclass Program
 2
 现在,代码的运行几乎是同时的,当4被打印到屏幕上时,16也会被很快打印出来!没中中间的sleep(3000)了。
还有一种方法是,不用关心定义的委托的名字是什么,同样能实现返回参数,如下所地:


 1.net知识和学习方法系列(九)委托异步调用方法aclass Program
 2
  注意以下代码:
((DL)(((AsyncResult) asyncresult1).AsyncDelegate)).EndInvoke(asyncresult1)),关没有提及被定义的dl,还有一点就是dl.BeginInvoke(2, null, null)的两个null参数,好,下一篇再介绍!
在上面的例子中,异步的实现就如一个带参数的多线程的实现!可作类同的处理。

相关文章:

  • 2021-06-24
  • 2022-03-08
  • 2021-08-12
  • 2021-09-12
  • 2021-09-13
  • 2021-07-07
  • 2021-12-26
猜你喜欢
  • 2021-12-30
  • 2021-10-25
  • 2022-12-23
  • 2021-12-06
  • 2022-01-03
  • 2022-02-16
  • 2021-06-08
相关资源
相似解决方案