第一个Windows服务 - 计时器似乎没有打勾

时间:2009-11-26 18:49:57

标签: c# .net windows-services

我写了我的第一个Windows服务。

  1. 创建WS项目
  2. 重命名服务
  3. 将计时器拖到中间
  4. 启用它,勾选为1s
  5. 在不存在时创建一个logfie
  6. 安装服务
  7. 运行服务
  8. 什么都没发生......

    我尝试连接到服务,它已正确加载,但其中有一个断点,它永远不会命中。

    有什么想法吗?


    代码计时器:

    private void timMain_Tick(object sender, EventArgs e)
    {
        if (!File.Exists("C:/test.txt"))
        File.Create("C:/test.txt");
    }
    

    代码初始化:

    private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.timMain = new System.Windows.Forms.Timer(this.components);
        // 
        // timMain
        // 
        this.timMain.Enabled = true;
        this.timMain.Interval = 1000;
        this.timMain.Tick += new System.EventHandler(this.timMain_Tick);
        // 
        // AuctionService
        // 
        this.CanShutdown = true;
        this.ServiceName = "AuctionService";
    
    }
    

    一个字:File.Create仅用于测试计时器是否打勾。因为那个=)

    ,我有点不灵活

2 个答案:

答案 0 :(得分:12)

即使您正确初始化计时器,它也没有做任何事情,因为您没有在UI中使用它。 MSDN docs表示必须与UI消息泵一起使用,服务没有。

我建议您使用System.Threading.Timer,因为它不需要UI,更适合在服务中使用:

Timer t = new Timer(t_Tick, null, 0, 1000);

请注意,此计时器的tick事件处理程序仅将object作为参数。

答案 1 :(得分:3)

你如何“运行服务”?您必须通过服务管理器启动该服务。从VS运行它不会这样做。如果要调试它,您仍然需要通过服务管理器启动它,然后在调试器运行时附加调试器