单线程实现类似Timer的间隔处理
Timer应该是多线程的,每到一定的时间就触发事件,不会管上一次执行是否成功   
 时间间隔大概为30秒 
 现在做法是建立一个线程,然后处理事件, 
 处理完后sleep   30   秒   
 问题在于窗体会不再响应,看任务管理器 
 应用也会显示没有反应 
 感觉好像性能不高效,有什么好的方法没有? 
------解决方案--------------------利用单线程完成,自然就要设计到线程的安全。   
 你可以跟踪到代码,看看是否二次激发,还是干脆卡在了第一次的运行中; 
 ================================================================== 
 博客空间:http://blog.csdn.net/lovingkiss 
 资源下载:http://download.csdn.net/user/lovingkiss 
 Email:loving-kiss@163.com 
 优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发 
 联系方式:Q64180940(请清楚注明业务还是技术咨询)  全天在线 
 ==================================================================
------解决方案--------------------看了一下,说几点想法: 
 1. 不应该在UI线程Sleep 30s,这样会让你的UI无响应。 
 2. 建议在UI线程外单起一个工作线程,方法可以用 
    (1) BackgroundWorker类,.NET 提供的专门用于做后台工作的类 
    (2) 直接new Thread(),效果一样,不过没有BackgroundWorker类那么好控制。 
 3. 如果用Timer,建议用以下方式试试: 
    (1) 写一个delegate,将你的操作写在其中 
    (2) 起一个Timer,每30秒去触发这个delegate,需要注意的是这个delegate最好用异步形式(BeginInvoke)   
 以上属于个人看法,仅供参考
------解决方案--------------------neucf()  
 --- 
 同意,调用的应该是一个委托,其他的不一定能执行
------解决方案--------------------用单独线程比较好。或用线程池。
------解决方案--------------------我感觉还是用委托比较好些。
------解决方案--------------------呵呵,今天刚好了一个跟这个差不多的东西,拿出来分享一下 
    thread = New Threading.Thread(AddressOf 你的函数名字)   
 此处省略........ 
       While True 
            ........................... 
             System.Threading.Thread.CurrentThread.Sleep(3000) 
         End While   
 此处省略........ 
 把你的代码写在这个死循环里面,它就每隔30秒执行一次你想要做的事情啦
------解决方案--------------------哦,我忘记了,这个是用vb.net写的;不过c#和这个差不多;大同小异   
------解决方案--------------------不懂,帮顶
------解决方案--------------------用BackgroundWorker  或者  线程池,你的UI就不会死了