自动执行服务程序 两法

创建服务程序,利用此程序完成自动执行的工作。两种方法:
首先创建服务程序,下图

自动执行服务程序 两法_第1张图片

一、timer法
添加timer控件,据说工具箱中已有的timer(System.Windows.Forms)不能执行此类程序,必须添加新的timer控件(system.Timers)。这两个Timer控件的命名空间不同。

自动执行服务程序 两法_第2张图片


自动执行服务程序 两法_第3张图片

拖曳控件到设计页面右键设置属性如执行间隔等。双击添加事件执行以下测试代码
//Timer方法
        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            int a = 0;
            String s = System.DateTime.Now.ToString();
            if (!File.Exists("D:\\bbbirdlog.txt"))
            {
                StreamWriter sr = File.CreateText("D:\\bbbirdlog.txt");
                sr.WriteLine("-------------------------START SRV---------------------");
                sr.WriteLine("现在Timer方法时间:{0}", s);
                sr.Close();
            }
            else
            {
                StreamWriter sr = File.AppendText("D:\\bbbirdlog.txt");
                sr.WriteLine("-------------------------START SRV---------------------");
                sr.WriteLine("现在Timer方法时间:{0}时间开始", s);
                sr.Close();
            }

            StreamWriter sr2 = File.AppendText("D:\\bbbirdlog.txt");
            sr2.WriteLine("-------------------------START SRV---------------------");
            sr2.WriteLine("Timer方法循环{0}次", a++);
            sr2.Close();

        }

二、线程法

自动执行服务程序 两法_第4张图片


自动执行服务程序 两法_第5张图片


自动执行服务程序 两法_第6张图片

 // 时间扫描间隔
        private static int timeSpan = 3000;

        private Thread thMoniTask;//用来监测执行进度的线程

        public Service1()
        {
            InitializeComponent();
        }

        
        protected override void OnStart(string[] args)
        {
            //启动线程
            thMoniTask = new Thread(new ThreadStart(MyProc));
            thMoniTask.Start();
        }

        protected override void OnStop()
        {
        }

        //线程法
        private void MyProc()
        {
            int a = 0;
            while (true)
            {
                String s = System.DateTime.Now.ToString();
                if (!File.Exists("D:\\bbbirdlog.txt"))
                {
                    StreamWriter sr = File.CreateText("D:\\bbbirdlog.txt");
                    sr.WriteLine("-------------------------START SRV---------------------");
                    sr.WriteLine("现在线程法时间:{0}", s);
                    sr.Close();
                }
                else
                {
                    StreamWriter sr = File.AppendText("D:\\bbbirdlog.txt");
                    sr.WriteLine("-------------------------START SRV---------------------");
                    sr.WriteLine("现在线程法时间:{0}时间开始", s);
                    sr.Close();
                }
                // 扫描间隔
                Thread.Sleep(timeSpan);

                StreamWriter sr2 = File.AppendText("D:\\bbbirdlog.txt");
                sr2.WriteLine("-------------------------START SRV---------------------");
                sr2.WriteLine("线程法循环{0}次", a++);
                sr2.Close();

            }
        }


启动或安装:

自动执行服务程序 两法_第7张图片


自动执行服务程序 两法_第8张图片


服务启动设置:
如果无法启动服务,请将项目文件夹赋予权限如everyone则可以启动

自动执行服务程序 两法_第9张图片


运行效果:

自动执行服务程序 两法_第10张图片


附:源代码
http://dl.iteye.com/topics/download/33cc726e-57d5-3d1d-887e-f9cbe7c76f2a

你可能感兴趣的:(thread,C++,c,windows,C#)