WEB开发网
开发学院软件开发C语言 我眼中委托的真正面貌(三) 阅读

我眼中委托的真正面貌(三)

 2009-05-14 08:28:38 来源:WEB开发网   
核心提示: 大家留心我在代码中用红笔勾注的这句代码,如果说委托方法在调用时立即返回,我眼中委托的真正面貌(三)(7),那么这句代码会马上执行,不过,届时大家自然可以真真正正的总结出适合于自己思路的委托使用环境,以及,当大家运行时就会发现,这句代码是在SetText()方法返回之后才执行的—

大家留心我在代码中用红笔勾注的这句代码,如果说委托方法在调用时立即返回,那么这句代码会马上执行。不过,当大家运行时就会发现,这句代码是在SetText()方法返回之后才执行的——这便是Control.Invoke()方法所起到的作用了。大家注意,本身这是一个多线程程序,按理说this.Invoke(Objdelegate, new object[] {});将相应的委托方法强制到主线程去执行,子线程是不受影响的,不过这里却是完全按照单线程的方式在执行的。这就是所谓的“绝对同步”,也就是说即使是多线程也同样会强制按照单线程的方式来执行。这里和本节提到的[delegate].Invoke ()方法执行方式完全一致。

感兴趣的读者也可以尝试将this.Invoke()改为this.BeginInvoke(),查看一下运行效果。没错,和本节提到的[delegate].BeginInvoke ()方法执行方式完全一致。

也就是说,不管当前运行的环境是多线程还是单线程。同步方法会强制程序按照单线程的方式执行,异步方法则强制程序按照多线程方式执行。

其实,从写第一篇关于委托的随笔开始,就不断有园友问我:什么时候采用委托?在这里,我并不打算对这个问题做出正面回答。原因很简单——程序效果是单一的,实现方式则是多种多样的。这里提供本人在学习委托过程中的几个相当有代表性的实例,仅仅是为了帮助读者们以自己的方式来理解委托的用途。每个人有每个人看待事物的独特方式,别人的思想到你身上不一定就行得通。

真心希望以上的几篇随笔可以帮助读者对委托有一个更深入的认识,届时大家自然可以真真正正的总结出适合于自己思路的委托使用环境,以及,你自己眼中所看到的委托的真正面貌。

系列文章:

我眼中委托的真正面貌(二)

我眼中委托的真正面貌(一)

上一页  2 3 4 5 6 7 

Tags:眼中 委托 真正

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接