计时器和Windows Serice c#

时间:2017-04-26 13:35:58

标签: c# timer windows-services

我在Windows服务中遇到一个奇怪的问题。是我的第一个Windows服务,所以为了开始学习我决定创建一个服务,每10秒写一个.txt文件的时间。 我添加计时器,但看起来计时器永远不会启动。 你能帮我理解我哪里错了吗? 在这里我的代码:

namespace testtimer
{
    public partial class TestTimer : ServiceBase
    {
        public TestTimer()
        {
            InitializeComponent();
            timer.Interval = 10000;
            timer.Enabled = true;
        }

        protected override void OnStart(string[] args)
        {
            timer.Start();
        }

        protected override void OnStop()
        {
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            string date = System.DateTime.Now.ToString();
            StreamWriter wr = new StreamWriter(@"C:\Users\xxx\Desktop\Test\testtimer.txt", true);

            wr.WriteLine("\n" + "The Time is:" + "\t" + date);
            wr.Close();
        }
    }
}

我哪里错了?

非常感谢你的帮助:)

1 个答案:

答案 0 :(得分:1)

猜猜你正在使用Windows.Forms计时器(组件一,你拖到你的设计界面上)......这需要一个"窗口"和"消息循环"为了能够处理/接收实际的计时器刻度事件。

当您使用NT服务时......您没有窗口......您只需要一些具有SCM调用入口点的代码(服务控制经理)。

您需要使用使用线程的其他类型的计时器,并将回调函数。