zoukankan      html  css  js  c++  java
  • VS2005开发windows服务的注意事项

    1、Timer控件失效的解决
    在Windows 服务不引发计时器事件
    原因:
    我认为windows服务里不能使用System.Windows.Forms的Timer控件,
    Windows.Forms 计时器组件用于 Windows.Forms 环境。 WindowsForms 计时器组件不用于服务器环境,所以要使用System.Timer下的控件。

    解决方案
    这个可以通过修改控件的类型,把所有使用服务器计时器从命名空间 System.Timers 代替 System.Windows.Forms 计时器。注意System.Timers的事件是Elapsed事件

    如:
    Service1.Designer.cs

     1namespace MyNewService
     2{
     3    partial class MyNewService
     4    {
     5        /// <summary> 
     6        /// 必需的设计器变量。
     7        /// </summary>

     8        private System.ComponentModel.IContainer components = null;
     9
    10        /// <summary>
    11        /// 清理所有正在使用的资源。
    12        /// </summary>
    13        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>

    14        protected override void Dispose(bool disposing)
    15        {
    16            if (disposing && (components != null))
    17            {
    18                components.Dispose();
    19            }

    20            base.Dispose(disposing);
    21        }

    22
    23        组件设计器生成的代码
    52
    53        private System.Diagnostics.EventLog eventLog1;
    54        private System.Timers.Timer timer1;
    55 
    56    }

    57}
    Service1.cs
     1using System;
     2using System.Collections.Generic;
     3using System.ComponentModel;
     4using System.Data;
     5using System.Diagnostics;
     6using System.ServiceProcess;
     7using System.Text;
     8
     9namespace MyNewService
    10{
    11    public partial class MyNewService : ServiceBase
    12    {
    13        public MyNewService()
    14        {
    15            InitializeComponent();
    16            if (!System.Diagnostics.EventLog.SourceExists("MySource"))
    17            {
    18                System.Diagnostics.EventLog.CreateEventSource(
    19                    "MySource""MyNewLog");
    20            }

    21            eventLog1.Source = "MySource";
    22            eventLog1.Log = "MyNewLog";
    23        }

    24
    25        protected override void OnStart(string[] args)
    26        {
    27            eventLog1.WriteEntry("In OnStart");
    28            this.timer1.Enabled = true;
    29            
    30
    31        }

    32
    33        protected override void OnStop()
    34        {
    35            eventLog1.WriteEntry("In onStop.");
    36            this.timer1.Enabled = false;
    37        }

    38
    39        protected override void OnContinue()
    40        {
    41            eventLog1.WriteEntry("In OnContinue.");
    42        }

    43
    44      
    45
    46        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    47        {
    48            eventLog1.WriteEntry("timer1_Tick." + DateTime.Now.ToString());
    49        }
      
    50
    51
    52    }

    53}

    54
  • 相关阅读:
    C++网易云课堂开发工程师-操作符重载
    C++网易云课堂开发工程师-参数传递与返回值
    C++网易云课堂开发工程师-class的声明
    C++网易云课堂开发工程师-头文件与类声明
    线性代数的本质-08第二部分-以线性代数的眼光看叉积
    线性代数本质-08第一部分-叉积的标准介绍
    线性代数的本质-07-点积与对偶性
    线性代数的本质-06补充说明-非方阵
    线性代数的本质-06-逆矩阵、列空间与零空间
    cocos2d-x
  • 原文地址:https://www.cnblogs.com/liubiqu/p/920173.html
Copyright © 2011-2022 走看看