c# 委托实例的几种执行方式详解

声明委托:

首先,绑定委托方法有如下几种方式:

第一种,直接对符合委托结构的方法进行多绑定:

第二种,绑定匿名方法:

第三种,用等号指定单方法:

注意,第三种绑定方式会将之前所绑定的方法全部解绑,执行结果如下:

如果将第三种的=改为+=,则执行结果如下,会按照你绑定的顺序依次执行:

以上,是委托实例对方法进行绑定的几种方式,下面则是委托实例的几种执行方式:

第一种,直接用执行:

这种方式采用的是同步线程执行,会依次执行该委托实例所有绑定的方法,直到执行完毕,才会继续走下面的代码。

第二种,采用异步执行方式:

但是如上所示,你发现用异步执行报错了,原因就是,如果你要使用异步执行委托的话,那么将不再能够进行多方法绑定,如果绑定了多个方法,则会报出“该委托必须有一个目标,且仅有一个目标”的异常。

我们改为只绑定一个方法,就执行正常了:

那么问题来了,这两种执行方法,各有什么优劣呢?

很显然,同步调用的执行方式可以进行方法的多绑定,但缺点就是我们必需要等待其所有绑定方法执行结束,才能进行后面代码的执行。

而异步调用却无需等待,直接便可执行后方的代码,并且,异步执行委托可以让我们控制方法的执行时间,如下:

其中关键方法WaitOne(1000)意思就是说,在该委托执行之后,阻塞当前线程1000毫秒,用以等待,如果过了1000毫秒委托还没有执行完毕,就会返回false。我们根据判断,可以做一些特殊的功能,比如说弹个“执行超时”的弹框啦,或者是像上面我写的代码一样,做一些动态效果之类的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章