zoukankan      html  css  js  c++  java
  • Windows服务简单实例

    1.定时器使用

        partial class TimerService : ServiceBase
        {
            public TimerService()
            {
                InitializeComponent();
            }
    
            Timer timer = new Timer();
            protected override void OnStart(string[] args)
            {
                // TODO: 在此处添加代码以启动服务。
                AddLog("****服务启动");
    
                timer.Elapsed += timer_Elapsed;
                timer.Interval = 1000;
                timer.Start();
            }
    
            int number = 0;
            void timer_Elapsed(object sender, ElapsedEventArgs e)
            {
                try
                {
                    number++;
                    AddLog("" + number + "次执行方法");
                    AddLog("当前时间:" + DateTime.Now.ToLongTimeString());
                }
                catch (Exception)
                {
    
                }
            }
    
            protected override void OnStop()
            {
                // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
                AddLog("****服务终止");
                timer.Stop();
            }
    
            public void AddLog(string str)
            {
                using (StreamWriter sw = new StreamWriter(@"G:log.data", true))
                {
                    sw.WriteLine("****************************************");
                    sw.WriteLine(str);
                }
            }
        }
    2.记录日志和数据库访问
        partial class MessageBoxSer : ServiceBase
        {
            Thread mainThread;
            public MessageBoxSer()
            {
                InitializeComponent();
    
                mainThread = new Thread(new ThreadStart(ThreadFunc));
                mainThread.Priority = ThreadPriority.Normal;
            }
    
    
    
            
            public static void ThreadFunc()
            {
                //while (true)
                //{
                //    Thread.Sleep(1000);
                //    MessageBox.Show("asdfasdf");
                //}
    
                while (true)
                {
    
                    // MessageBox.Show("asdfasdf");
                    Thread.Sleep(3000);
    
                    //修改数据库
                    SerTableDA.AddData();
    
    
                    //记录日志
                    //try
                    //{
                    //    using (StreamWriter sw = new StreamWriter(@"G:log.data", true))
                    //    {
                    //        sw.WriteLine(DateTime.Now.ToLongTimeString() + "执行循环代码");
                    //    }
                    //}
                    //catch (Exception ex)
                    //{
    
                    //}
                }
            }
    
    
            protected override void OnStart(string[] args)
            {
                // TODO: 在此处添加代码以启动服务。
                mainThread.Start();
            }
    
            protected override void OnStop()
            {
                // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
                mainThread.Abort();
            }
        }
  • 相关阅读:
    线程实现的两种方式
    webhook功能概述
    Linux 常用高频命令
    Mac安装Homebrew的正确姿势
    Mac 环境变量配置
    详解k8s零停机滚动发布微服务
    详解k8s原生的集群监控方案(Heapster+InfluxDB+Grafana)
    白话kubernetes的十万个为什么(持续更新中...)
    一个典型的kubernetes工作流程
    k8s实战之从私有仓库拉取镜像
  • 原文地址:https://www.cnblogs.com/tianma3798/p/3835740.html
Copyright © 2011-2022 走看看