zoukankan      html  css  js  c++  java
  • 在VS2005 中使用的计时器(Timer)的困惑.

      最近为了实现一个自动更新服务,决定用windows 服务,每隔一定时间,自动轮询服务上的组件是否有更新,如果有更新,则自动下载更新。这一部分没有什么难度,根据向导模板,创建一个windows service 项目,系统会自动生成一个Service1.cs的文件,双击打开该文件,然后再从“工具栏”-->“组件”下,拖一个Timer 控件到文件中,如图所示:

      

          然后定义Timer的Interval属性和Tick 事件,编译、安装,正准备庆祝胜利的时候,结果不如所愿,问题出来了:Tick 事件不执行。检查来检查去,没什么问题啊,郁闷......

      google,baidu 了一下,创建windows service 的文章铺天盖地,可是都是这样介绍的啊,没有特别说明的地方啊,为什么就不执行呢?最后在Service1.Designer.cs 文件中,发现了这样一个信息:

           #region 

            
    /// <summary> 
            
    /// 
            
    /// 
            
    /// </summary>
            private void InitializeComponent()
            {
                
    this.components = new System.ComponentModel.Container();
                
    this.timer1 = new System.Windows.Forms.Timer(this.components);
                
    // 
                
    // Service1
                
    // 
                this.ServiceName = "Service1";

            }

            
    #endregion

            
    private System.Windows.Forms.Timer timer1;

    private System.Windows.Forms.Timer timer1;为什么是 System.Windows.Forms.Timer呢,在service 中,应该不能运行Windows.Forms啊,问题可能就出在这里了,Find Help ,原来还有一个Timer :System.Timers.Timer ,手工修改Service1.Designer.cs文件,把Tick事件 变为Elapsed事件,重新编译、安装,成功了,一个小小的东西,竟折腾了我一个多小时,个中滋味,真难以表达啊。

      总结:

      在Visual Studio 中提供了三种类型的Timer:

         System.Windows.Forms.Timer    基于windows 的计时器,运行于Windows 窗体程序中。

         System.Timers.Timer       基于服务的计时器,运行于服务器环境中。

         System.Threading.Timer     基于线程的计时器,使用回调方法而不是使用事件,并由线程池线程提供支持。

          在Visual Studio 2003的工具箱里面默认提供了System.Windows.Forms.Timer和System.Timers.Timer两种,而Visual Studio 2005 或者2008中却只默认提供了System.Windows.Forms.Timer这一种,所以在vs 2005或者VS2008的windows service 中使用计时器时,必须手工修计时器定义,计时器才能正常运行。

  • 相关阅读:
    概率统计(DP)
    iOS中几种定时器
    微信开发笔记——微信网页登录授权,获取用户信息
    swift中通知的使用
    Swift的基础,操作符,字符串和集合类型
    NSNotificationCenter
    IOS中通知中心(NSNotificationCenter)的使用总结
    Swift观察者模式
    swift中通知的使用
    Swift
  • 原文地址:https://www.cnblogs.com/invinboy/p/1255950.html
Copyright © 2011-2022 走看看