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

 

            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消息机制实现的,类似于VBDelphi中的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!"); 
 } 
posted on 2011-06-03 10:47  super mans  阅读(591)  评论(0编辑  收藏  举报