C#委托的用法

  • 格式:doc
  • 大小:135.00 KB
  • 文档页数:4

C#委托的用法
学.Net的同学们,我们常常会有这样一种感觉,对于一项技术,或者一个方法,我们都知道它很有用,可就是用不着,或者说,并不知道什么地方能用的上,所以,技术学会了,却用不上,也就无法深入。

时间一长,就容易忘,结果就是,这个我学过,那个我也懂,可是我就不会用。

下面我们就从C#委托开始吧。

前段时间,做了一个局域网通讯工具的项目,在其中涉及到修改个人资料的模块上,遇到了一个有些意思的问题,就是,当用户在修改资料的窗体修改完个人头像的时候,如何让主窗体也随之更新头像,这里,我想到几种方法,第一,用多线程,第二,C#的Timer定时器,这两种方法,其实都是让程序每隔一定的时间刷新一下用户头像,确定可行,不过,用线程来做,实在有点小题大做,而且也涉及到线程间窗体调用的检查,觉得得不尝失,而定时器——老依靠控件并非明智之举吧。

何况我们有更好的办法,对,就是委托。

在学C#时,我们都知道,委托是一个变量,可以把方法名当做一个值赋给它,这样,我们就可以用这个委托变量来调用这个方法。

当初在学的时候,相信大家都有感触:明明调用一下方法就可以完成的事,为什么又要搞个委托,绕个弯呢?
实际上,在很多情况下,我们并不能直接的调用方法,可能这个方法是private类型的,但又需要在外部来调用它,这时,就可以用委托来调用,下面举一个例子来
就本人的理解,实现一个功能可以用很多方法,每一种方法代表一种思想,一种理念,对于这个例子,我们可以用线程或者定时器来做,让Form1不断的去判断Form2是否选择了新图片,如果是,我就改。

而用委托,则主动权交给了Form2,Form2选择了图片,来告诉我,我再改。

没有最好的方法,只有最合适的方法。

比如在局域网用Socket通信时,同步阻止模式下,就需要开一个线程来处理与其他用户的会话,这时选择的是线程,而非委托。