WindowsService 浅学

 
<span style="font-size:12px;">1.工具:Visual Studio </span>

2.首先我们使用VS创建一个服务

 

 

3.然后,我们可以添加一个类,编写自己需要执行的Method

 

  public class Class1
    {
        Thread thEmsGet;
        Thread thSfGet;
      
        public Class1()
        {

        }

        public void ThreadAction()
        {
            thEmsGet = new Thread(new ThreadStart(EMSGet));
            thSfGet = new Thread(new ThreadStart(SFGet));
            thEmsGet.Start();  //启动线程
            thSfGet.Start();
        }

        public void ThreadOver()
        {
           string state="顺丰快递线程结束";
            WirteLog(state);
            thSfGet.Abort();
           string  st = "EMS快递线程结束";
            WirteLog(st);
            thEmsGet.Abort();
           
        }
        private void EMSGet()
        {
            string s = "获取EMS快递";
            WirteLog(s);
            thEmsGet.Abort(); 
        }
        private void SFGet()
        {
            string s = "获取顺丰快递";
            WirteLog(s);
            thSfGet.Abort(); 
        }
        public void WirteLog(string str)
        {

            try
            {
                lock (this)
                {
                    using (StreamWriter sw = File.AppendText(@"D:\service.txt"))
                    {
                        sw.WriteLine(str);
                        sw.Flush();
                    }
                }
            }
            catch(Exception e)
            {
                using (StreamWriter sw = File.AppendText(@"D:\service.txt"))
                {
                    sw.WriteLine(e.ToString());
                    sw.Flush();
                }
            }

        }
  
    }


当然我们再写此类的时候别忘在D盘添加一个service.txt

4.主方法:

static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new Service1() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }

当程序开始执行ServiceBase.Run方法的时候,执行继承ServiiceBase的子类,此项目是Service1.cs类
5.在Service类中,添加一个计时器,这样就可以定时执行。

   public partial class Service1 : ServiceBase
    {
        System.Timers.Timer timer1;
        public Class1 c1 = new Class1();
        public Service1()
        {
            InitializeComponent();
            timer1 = new System.Timers.Timer();
            timer1.Interval = 6000;
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
            timer1.Enabled = false;
        }
        
        protected override void OnStart(string[] args)
        {      
              timer1.Enabled = true;         
        
        }

        protected override void OnStop()
        {
            c1.ThreadOver();
            timer1.Enabled = false;
        }
         private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
          
          c1.ThreadAction();
            //SFGet();            
            //Thread t = new Thread(new ThreadStart(SFGet));
           //t.Start();
        }
}


6.右击Service1.cs的设计窗口,选择添加安装程序,即可自动生成一个Projectinstall类,同时注意将serviceProcessInstaller1属性 Account 改为LocalService,否则创建服务的时候需要输入用户名和密码

 

7.WindowsService是不可调试的,只可以生成,生成之后,我们就可以开始Service 的install

找到C:\Windows\Microsoft.NET\Framework64\v4.0.30319 目录下InstallUtil.exe文件,并将InstallUtil.exe文件拷贝到自己程序bin/debug目录下,

运行“CD\ ”  即可进入C盘根目录,再输入“E:” 即可进入E盘根目录,再输入“cd  学习资料\C#\WindowsService1\WindowsWervice2\bin\debug  ”即可进入debug目录

然后再输入"InstallUtil.exe WindowsService2.exe"回车即可生成服务。当然在此也可以输入"InstallUtil.exe WindowsService2.exe /u"进行卸载

 
 
 
8.在管理服务里面启动此服务,查看D盘Service.txt文件
 
服务就这样建成了,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值