日期:2014-05-19  浏览次数:20725 次

C# Threading.Timer的疑惑
各位大虾:

        使用Threading.Timer时会在规定时间回调方法。由于callback函数由线程池中的线程执行,如果timer的interval值小于callback函数的执行时间,callback函数会被多个线程执行.如果线程池中的线程被用光,callback函数  
会排队等待,不能如期执行.

        这样会不会造成多个线程同时回调执行该方法,那是不时必然产生同步冲突,
如果我的需求是,用户在UI上点击某个按钮就不停的扫描数据库,那时不时使用
Thread来长期执行就可以了,而不需要使用Threading.Timer来定时执行,这样是否
只能用Lock()来解决,那Threading.Timer对于一般操控来说只是引入了多线程的
复杂问题,并未有其他好处或功效,甚至占用资源。


------解决方案--------------------
这种情况下的确是有问题,但是Threading.Timer也有其它的用途:比如超时处理,以及需要精确控制时间的场合