C# 开发Window服务

参考

https://jingyan.baidu.com/article/fa4125acb71a8628ac709226.html

http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html

注意

1、设置服务安装后自动启动

在serviceInstaller1的AfterInstall添加如下代码

private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
    System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController("你设置的服务名");
    s.Start();
}

2、windows服务不执行Timer控件的解决办法

        Timer timer = new Timer();
        public Service1()
        {
            InitializeComponent();
            timer.Interval = 2000;
            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            timer.AutoReset = true;//设置是执行一次(false),还是一直执行(true);
            timer.Enabled = true;
            timer.Start();
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            File.WriteAllText("D:\\text.txt", DateTime.Now.ToString() + "\r\n");
        }

3、设置允许服务与桌面交互方法

让服务启动某个应用程序,就要修改服务的属性,勾选允许服务与桌面交互

#region 设置服务与桌面交互

        /// <summary>
        /// 设置服务与桌面交互,在serviceInstaller1的AfterInstall事件中使用
        /// </summary>
        /// <param name="serviceName">服务名称</param>
        private void SetServiceDesktopInsteract(string serviceName)
        {
            System.Management.ManagementObject wmiService = new System.Management.ManagementObject(string.Format

("Win32_Service.Name='{0}'", serviceName));
            System.Management.ManagementBaseObject changeMethod = wmiService.GetMethodParameters("Change");
            changeMethod["DesktopInteract"] = true;
            System.Management.ManagementBaseObject utParam = wmiService.InvokeMethod("Change", changeMethod,

null);
        }
        #endregion

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值