winform Timer(转)

今天和同事一起研究了下windows服务程序中的Timer控件的写法.
我们在建立一个windows服务程序后,要用到计时器的话一般都会想到Timer控件,于是到工具器把Timer控件拉过来,双击写事件,设置时间,哇,成功了....
但服务一跑起来,唉,怎么回事,时间到了怎么没有执行事件呢???????
后来,我找很多资料才知道,这个Timer控件是winForm下的,不能用在windows服务程序中.
怎么办呢.......
打开"工具箱"---右键---"选择项"---找到Timer控件,看好了,这个Timer控件的是system.Timer下的.可不是System.Windows.Form.然后添加.timer.jpg
双击...写事件...

 

             if  (strSelectedItemName  ==   " GetURCBValues " )
            {

                
this .timer1.Enabled  =   true ;
                
this .timer1.Start();
                
return ;             
            }
            
else
            {
                
this .timer1.Stop();  // 停止计时
            }
 
 
关于 C# timer    C# 里关于定时器类就有 3    
1.
定义在 System.Windows.Forms    
2.
定义在 System.Threading.Timer 类里   " 
3.
定义在 System.Timers.Timer 类里   

System.Windows.Forms.Timer
是应用于 WinForm 中的,它是通过 Windows 消息机制实现的,类似于 VB Delphi 中的 Timer 控件,内部使用 API  SetTimer 实现的。它的主要缺点是计时不精确,而且必须有消息循环, Console  Application( 控制台应用程序 ) 无法使用。    
  
System.Timers.Timer
System.Threading.Timer 非常类似,它们是通过 .NET  Thread  Pool 实现的,轻量,计时精确,对应用程序、消息没有特别的要求。 System.Timers.Timer 还可以应用于 WinForm ,完全取代上面的 Timer 控件。它们的缺点是不支持直接的拖放,需要手工编码。  

例:  
使用 System.Timers.Timer  
System.Timers.Timer t  =   new  System.Timers.Timer( 10000 ); // 实例化Timer类,设置间隔时间为10000毫秒; 
t.Elapsed  +=   new  System.Timers.ElapsedEventHandler(theout); // 到达时间的时候执行事件; 
t.AutoReset  =   true ; // 设置是执行一次(false)还是一直执行(true); 
t.Enabled  =   true ; // 是否执行System.Timers.Timer.Elapsed事件; 

public   void  theout( object  source, System.Timers.ElapsedEventArgs e) 
 { 
    MessageBox.Show(
" OK! " ); 
 } 

转载于:https://www.cnblogs.com/softwareking/archive/2011/06/03/2070682.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值