项目中需要使用一个定时器,按一定的时间间隔调用WCF服务从服务器端加载一些缓存到客户端。
C#中有三种定时器:
(1)Form中的那个;
(2)System.Threading中的那个;
(3)System.Timers中的那个;
我开始使用的是第二种,然后再定时器执行的回调函数中调用WCF服务,没想到导致我的定时器只能执行一次,此后便不再执行。
然后我换成第三种定时器,在其事件处理函数中调用WCF服务,就可以正确运行了。
至于原因,项目做完再研究吧。
================================== 慵懒的分割线 =================================================
另外今天要为另一个模块提供一个接口,完成的工作是创建一个线程,创建一个命名管道的服务器端,在死循环中一直等待来自客户端的命名管道连接,如果有客户端链 接过来,则接受其传来的一个界面ID,打开对应的界面。
因为打开界面是在死循环中做,而且我需要提供出一个接口,所以就想到让调用这个接口的人传一个回调函数进来,当循环中接收到客户端的连接以及传过来的界面ID之后,调用这个回调函数,然后接口使用者就可以在自己的回调函数中进行对应界面的打开操作了。
我参考了第二种定时器的回调函数的写法,很简单就实现了这个回调函数的功能。
如果你也要实现一个回调函数的功能,或者说做一个包含回调函数的接口,你也可以参考第二种定时器的回调函数的实现方式。